单片机 简易秒表 在线等

来源:百度知道 编辑:UC知道 时间:2024/06/16 03:12:36
我用 proteus和 keil仿真秒表程序是
#include<reg52.h>
sbit wela=P2^0;
sbit dula=P2^1;
unsigned int num ;秒数
unsigned int sec ;20个sec是1秒 进一次中断时间是500us sec为20时 num加1
unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8
,0x80,0x90} ;
void delay();
void exter() ;中断声明
void main()
{ P0=0x00;

TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

if(sec==20)
{ num++;
sec=0; wela=1; P0=0x01;wela=0;位选 控制那个数码管亮
dula=1;段选 控制量的 数字
P0=Tab[num] ;
dula=0;
delay();} while(1) ;

}
void delay()
{unsigned int x,y ;
for(x=0;x<256;x++)
for(y=0;y<256;y++);}
void exter(void)interrupt 1 using 0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
sec++;
}电路图P2.0接位选p2.1接段选的片选
P0口接两个锁存器分别连接4个数码管的位选和段选
弄了半天可是就是进不了循环

你好像没有把if(sec==20) 没有放在循环里面,你必城把这个语句放在while(1)里,这样才能把段码送出去,我也不知道 你那仿真出了什么问题,我说的你在看一下,看是 不是这个问题