本帖最后由 张伟灵 于 2016-12-30 13:02 编辑 #include<reg52.h> sbit P3_3=P3^3; void Delay10ms() { unsigned char i,j; i=20; j=113; do { while(--j); } while(--i); } void main() { P3_3=0; //GATE=1时,外触发INT0和INT1要高电平触发 //注意:实验板按键都是接地,自己接个按键接5V。 TMOD=0x80; //GATE=1,TR1和外中断INT1共同控制,模式13位 IE=0x88; //EA=1,ET1=1 TH1=(8192-1000)/256; //12MHZ,设1MS触发外中断 TL1=(8192-1000)%256; //你也可以设10MS以下,最好不要超过按键抖动时间 TR1=1; //启动TR1中断,等待INT1触发 while(1) { /*你之前的程序*/ P2=0x33;}//我用P2试验LED灯00110011成功 } void time1() interrupt 3 { TR1=0; //影响按键判断的中断关了 TH1=(8192-1000)/256; //12MHZ,重新装初值1MS TL1=(8192-1000)%256; Delay10ms();//用实验板做才有效果,按键有抖动,不好仿真 if(P3_3==1) {/*你要显示的程序~~~ */ P2=0xaa; //试验P2口LED10101010 while(P3_3==1);} P2=0x0f; //试验P2口LED灯00001111 TR1=1; } |
![]() |
张伟灵 发表于 2016-12-28 23:17 ![]() |
张伟灵 发表于 2016-12-28 23:17 你可以具体一点吗?定时器的这个 我不是很懂 |
定时器1不是有个GATE吗?定时器1所有中断都置1,也要GATE=1。模式工作自己选择。当按键高电平(低电平的话,定时器1没反应)触发了定时器1开始计数,计数满就触发中断,就进到中断子程序了。 |
你编好你的学号和51字样进到外中断子程序里面,按下按键就触发中断了。 |