我采用T0计数,采用工作方式2,每当用脉冲输入到T0端时,变量加一,并在主程序等待中断的循环体内输出并显示脉冲个数
以下是我的代码
#include<reg51.h>
unsigned int cnt_t0,cnt_t1,qian,bai,shi,ge,bb,wan,shiwan;
unsigned int num;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管断码表
void delay1ms(unsigned int z) //延时1ms程序
{
unsigned char i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
void init() //T0初始化
{
num=0;
TMOD=0x06;
TH0=255;
TL0=255;
ET0=1;
EA=1;
TR0=1;
}
void display(unsigned long num_num) //驱动数码管显示
{
shiwan=num_num%1000000/100000;
wan=num_num%100000/10000;
qian=num_num%10000/1000;
bai=num_num%1000/100;
ge=num_num%100/10;
P0=0xdf; //P0是位选
P2=table[shiwan];
delay1ms(1);
P0=0xef;
P2=table[wan];
delay1ms(1);
P0=0xf7;
P2=table[qian];
delay1ms(1);
P0=0xfb;
P2=table[bai];
delay1ms(1);
P0=0xfd;
P2=table[shi];
delay1ms(1);
P0=0xfe;
P2=table[ge];
delay1ms(1);
}
void main()
{
P0=0xff;
init();
while(1)
{
display(num);
}
}
void
timert0() interrupt 1
{
num++;
}
初始化不应该填进去?你确定,不填进去系统怎么知道你是什么中断,中断是否允许,不应该用中断?我就是用的t0计数,计数满了就溢出开始执行中断里的程序啊,不应该吧
一周热门 更多>