lesson3 数码管静态显示及定时器和中断应用
1、电容帮助晶振起振。
2、发光二极管LED(Light Emitting Diode),液晶LCD(Liquid Crystal Display)。
3、数码管原理:
4、中断系统:中断发生——中断响应和中断服务——中断返回。(中断嵌套)
5、优点:1.分时操作;2.实时响应;3.可靠性高。
6、80C51单片机的中断优先级有三条原则:CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进行的低优先级中断服务,能被高优先级中断请求所中断。
为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
7、中断响应条件:1.中断源有中断请求;2.次中断源的中断允许为1;3.CPU开中断(EA=1)。
8、定时/计数器:一、定时/计数器的结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<reg52.h>
2 #include<intrins.h>
3 unsigned char code shu[]={0x3f,0x06,0x5b,0x4f,0x66,
4 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示数0123456789ABCDEF
5 unsigned int tt0,tt1,i,j,a;
6 unsigned char code hello[]={0x76,0x79,0x38,0x38,0x3f,};//显示HELLO
7 /*void qd0()
8 {
9 TMOD=0X01;//设置定时器0为工作方式1
10 TH0=(65536-50000)/256;
11 TL0=(65536-50000)%256;
12 ET0=1;//开定时器0
13 TR0=1;//启动定时器0
14 } */
15 void qd1()
16 {
17 TMOD=0X11;
18 TH1=(65536-50000)/256;
19 TL1=(65536-50000)%256;
20 ET1=1;
21 TR1=1;
22 }
23 /*void liushui(unsigned char temp)
24 {
25 P1=_crol_(temp,1);
26 } */
27 void delay(unsigned int b)
28 {
29 while(b--);
30 }
31 void main()
32 {
33 EA=1;//开总中断
34 P2=0;i=7;j=0;
35 P0=shu[i];
36 tt0=0;tt1=0;P1=0XFE;
37 TMOD=0X11;//设置定时器0为工作方式1
38 TH0=(65536-50000)/256;
39 TL0=(65536-50000)%256;
40 TH1=(65536-50000)/256;
41 TL1=(65536-50000)%256;
42 ET0=1;//开定时器0
43 ET1=1;
44 TR0=1;//启动定时器0
45 TR1=1;
46 while(1)
47 {
48 if (tt0==10)
49 {
50 tt0=0;
51 P1=_crol_(P1,1);
52 if (i==0)
53 {
54 j++;
55 if (j%2==1) P1=0;
56 else P1=0xff;
57 }
58 if (j==6) while(1)
59 {
60 for (a=0;a<5;a++)
61 {
62 P2=a+1;
63 P0=hello[a];
64 delay(50);
65 }
66 }
67
68 }
69 if (tt1==2)
70 {
71 tt1=0;
72 if (i>0)i--;
73 P0=shu[i];
74 }
75 }
76 }
77 void d0() interrupt 1
78 {
79 TH0=(65536-50000)/256;
80 TL0=(65536-50000)%256;
81 tt0++;
82 }
83 void d1() interrupt 3
84 {
85 TH1=(65536-50000)/256;
86 TL1=(65536-50000)%256;
87 tt1++;
88 }
注:1、汇编终于看完了,整整十天,好爽啊。。。。
2、单片机的前几章算是复习,笔记比较粗糙。
3、再次,我使用的开发板不是视频教程里面的