用P1口做输出口,接八只发光二极管。编写程序,使发光二极管循环点亮,循环点亮时间间隔为1秒,该时间间隔用定时器中断实现。/ INT0 接单次脉冲输出,每当有外部中断信号时,发光二极管循环方向取反。 请问用C语言怎么编?
4条回答 默认 最新
关注获得2.70元问题酬金 仿真如下:

上传不了仿真动图,直接看代码吧// 12MHz晶振 #include "reg52.h" #include "intrins.h" #define time (65536-50000) // 单次定时50ms unsigned char cn; unsigned char temp; unsigned char dir; void main(void) { cn=20; //20*50ms=1s temp=0x80; dir=0; TMOD = 0x10; //set timer1 as mode1 (16-bit) TL1 = time; //initial timer1 low byte TH1 = time >> 8; //initial timer1 high byte TR1 = 1; //timer1 start running ET1 = 1; //enable timer1 interrupt IT0 = 1; //set INT0 int type (1:Falling 0:Low level) EX0 = 1; //enable INT0 interrupt EA = 1; //open global interrupt switch while(1);// xunhuan } /* Timer0 interrupt routine */ void tm1_isr() interrupt 3 { TL1 = time; TH1 = time >> 8; if (cn-- == 0) { cn = 20; P1=temp; if(dir==0) temp=_cror_(temp,1); else temp=_crol_(temp,1); } } //External interrupt0 service routine void exint0() interrupt 0 //(location at 0003H) { dir=~dir; }评论 打赏 举报 编辑记录解决 1无用