#includereg52.h#define uint unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint i,num;void main(){ i=0; num=0; TMOD=0x10;//设置定时器1为工作方式1 【查看TMOD每一位的含义,你就知道怎么设置了】 EA=1; //开总中断 ET1=1; //开定时器1中断 TR1=1; //启动定时器0 TH0=(65536-50000)/256; //定时器0计数初值 高位 TL0=(65536-50000)%256; //定时器0计数初值 低位 P2=0xFE; P0=0xc0; while(1) { if(i==10) { P2=0xff; } if(i==20) { i=0; P2=0xfe; num++; if(num==10) num=0; P0=table[num]; } }}void time() interrupt 1{ TH0=(65536-50000)/256; //计数初值重载 TL0=(65536-50000)%256; i++; }
可能是你中断子程序有问题,代码空间存储重叠可能说是入口地址吧,你是用汇编写的程序吧,T0的起始地址是000BH,T1的起始地址是001BH,在起始地址处只能放一条LJMP指令。
查询的话程序中会一直检查标志位。中断的话会有中断服务程序,而且有中断的初始化,比如开总中断,定时器中断,和定时器初值的赋值等。查询和中断还是很好判断的,查询的话可以不写EA=1。
如果你的定时器中断有服务函数就要开启总中断。否则不能进入服务函数。你说的查询和中断应该是I/O口吧?要是有外部中断,也要把外部中断控制寄存器打开。
记住不要动不动就跪求。。。。跪天跪地跪父母你还想跪谁?是吧
这个我可以帮你,加q吧1320249827记住写明来意
步行者===电子单片机团
你给的程序,就是方式1,不过用的是定时器0,用定时器1的话,把TH0,TL0改成TH1,TL1就可以了啊。
举报成功
经过核实后将会做出处理
感谢您为社区和谐做出贡献
扫码参与新品0元试用
晒单、顶楼豪礼等你拿