单片机郭天祥的中断练习题1
1 # include <reg52.h>
2 # define uint unsigned int
3 # define uchar unsigned char
4 uchar t;
5 sbit d1 = P1^0;
6 void main()
7 {
8 t = 0;
9 TMOD = 0x01;
10 TH0 = (65536-50000)/256;
11 TL0 = (65536-50000)%256;
12 EA = 1;
13 ET0 = 1;
14 TR0 = 1;
15 while(1)
16 {
17 if(t == 10)
18 {
19 d1 = ~d1;
20 t = 0;
21 }
22
23 }
24 }
25 void extend1 ()interrupt 1
26 {
27 TH0 = (65536-50000)/256;
28 TL0 = (65536-50000)%256;
29 t++;
2 # define uint unsigned int
3 # define uchar unsigned char
4 uchar t;
5 sbit d1 = P1^0;
6 void main()
7 {
8 t = 0;
9 TMOD = 0x01;
10 TH0 = (65536-50000)/256;
11 TL0 = (65536-50000)%256;
12 EA = 1;
13 ET0 = 1;
14 TR0 = 1;
15 while(1)
16 {
17 if(t == 10)
18 {
19 d1 = ~d1;
20 t = 0;
21 }
22
23 }
24 }
25 void extend1 ()interrupt 1
26 {
27 TH0 = (65536-50000)/256;
28 TL0 = (65536-50000)%256;
29 t++;
30 }题目
利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。
分析
主要是定时器t0的断点实验,最主要说明的是,断点程序不要写过多的处理语句,语句过多会造成中断程序的代码还未打印出来,下一个中断就出来了,就会损失这次中断,
失误
这次失误主要是把那些定时器中断放到while中,是不对的,因为每次中断都要进行while循环,就会造成重新一次定义,因此必须放外面把定时器中断声明放外面
总结
耳机关去翻,之前没有用过,这个可以把频率均分,因此之前没有想到
代码