📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 11/06/2006 17:46:29 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include "Global.H"
2 #include "KeyTestTask.H"
3 #include "HelloTask.H"
4 #include "ClockTask.H"
5
6 void Delay(int time);//延时程序
7 void SystemInitialize(void);//系统初始始化
8
9 main()
10 {
11 1 //系统启动延时
12 1 //===========
13 1 Delay(100);
14 1
15 1 //系统初始化
16 1 //==========
17 1 SystemInitialize();
18 1
19 1 //主循环
20 1 //======
21 1 while(1)
22 1 {
23 2 //将系统按键值转换成自定义的按键值
24 2 //================================
25 2 KeyConvert();
26 2
27 2 //时钟参数加1秒。
28 2 //==============
29 2 ClockIncreaseProcess();
30 2
31 2 //任务执行体
32 2 //==========
33 2 switch(TaskMode)
34 2 {
35 3 case 1: KeyTestTask();break;
36 3 case 2: HelloTask();break;
37 3 case 3: ClockTask();break;
38 3 }
39 2 }
40 1 }
41
42 //延时程序
43 void Delay(int time)
44 {
45 1 while(time) time--;
46 1 }
47
48 //系统初始化
49 void SystemInitialize(void)
50 {
51 1 //资源设置(初始化)
52 1 //================
53 1 //定时器0工作在方式1 作16位定时器用(允许中断)
54 1 //定时器1工作在方式2 作波特率发生器用(禁止中断)
55 1 //定时器2工作在自动重装方式 作时间定时用(2.5ms产生一次溢出中断)
C51 COMPILER V7.50 MAIN 11/06/2006 17:46:29 PAGE 2
56 1 //外部中断设置 INT0及INT1均为边沿触发(允许中断)
57 1 //串行口设置为方式1 8位UART(允许中断)
58 1
59 1 TMOD = 0x21;//7(GATE),6(C/~T),5(M1),4(M0),3(GATE),2(C/~T),1(M1),0(M0)
60 1
61 1 TH0 = 0x00;//设置定时器0计数初值
62 1 TL0 = 0x00;
63 1
64 1 TH1 = 0xF4;//Serial Port Baud Rate 2400 bps, when the main frequence is 11.0592MHz
65 1 TL1 = 0xF4;
66 1
67 1 TCON = 0x55;//TCON: 7(TF1),6(TR1),5(TF0),4(TR0),3(IE1),2(IT1),1(IE0),0(IT0)
68 1
69 1 T2CON = 0x04;//T2CON:7(TF2),6(EXF2),5(RCLK),4(TCLK),3(EXEN2),2(TR2),1(C/~T2),0(CP/~RL2)
70 1 TH2 = 0xF7;//2.5ms产生一次溢出中断(晶振为11.0592MHz)
71 1 TL2 = 0x00;
72 1 RCAP2H = 0xF7;
73 1 RCAP2L = 0x00;
74 1
75 1 SCON = 0x78;//SCON: 7(SM0),6(SM1),5(SM2),4(REN),3(TB8),2(RB8),1(TI),0(RI)
76 1 PCON = 0x00;//PCON: 7(SMOD),6(null),5(null),4(null),3(GF1),2(GF0),1(PD),0(IDL)
77 1
78 1 IE = 0x37;//中断允许:7(EA),6(null),5(ET2),4(ES),3(ET1),2(EX1),1(ET0),0(EX0)
79 1 IP = 0x30;//中断优先级:7(null),6(null),5(PT2),4(PS),3(PT1),2(PX1),1(PT0),0(PX0)
80 1 //==============================================================================
81 1
82 1 //开启中断,允许中断响应
83 1 //======================
84 1 EA = 1;
85 1 }
86
87 /*
88 ==============================================================================
89 |/ 定时器0和定时器1控制
90
91 方式0: 1.计数方式: 13位计数器,高8位在THx,低5位在TLx的低5位.
92 2.计数脉冲输入: C/~Tx = 0 内部时钟12分频信号
93 C/~Tx = 1 Tx引脚信号
94 3.计数允许控制: (~GATEx | ~INTx) & TRx = 1 允许计数
95 (~GATEx | ~INTx) & TRx = 0 停止计数
96 4.中断允许: ETx = 1 允许中断响应
97 ETx = 0 禁止中断响应
98 5.计数溢出: 计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
99 计数溢出时需由软件重装计数初值到THx和TLx中.
100
101 方式1: 1.计数方式: 16位计数器,高8位在THx,低8位在TLx.
102 2.计数脉冲输入: C/~Tx = 0 内部时钟12分频信号
103 C/~Tx = 1 Tx引脚信号
104 3.计数允许控制: (~GATEx | ~INTx) & TRx = 1 允许计数
105 (~GATEx | ~INTx) & TRx = 0 停止计数
106 4.中断允许: ETx = 1 允许中断响应
107 ETx = 0 禁止中断响应
108 5.计数溢出: 计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
109 计数溢出时需由软件重装计数初值到THx和TLx中.
110
111 方式2: 1.计数方式: 8位重装计数器,8位计数值在TLx中,THx存放重装初值.
112 2.计数脉冲输入: C/~Tx = 0 内部时钟12分频信号
113 C/~Tx = 1 Tx引脚信号
114 3.计数允许控制: (~GATEx | ~INTx) & TRx = 1 允许计数
115 (~GATEx | ~INTx) & TRx = 0 停止计数
116 4.中断允许: ETx = 1 允许中断响应
117 ETx = 0 禁止中断响应
C51 COMPILER V7.50 MAIN 11/06/2006 17:46:29 PAGE 3
118 5.计数溢出: 计数溢出时置TFx为1,进入中断服务程序时由硬件自动清0.
119 计数溢出时由硬件重装THx计数初值到TLx中.
120
121 方式3: *定时器0专有的定时方式
122 定时器0的子定时器一
123 1.计数方式: 8位计数器,8位计数值在TL0中.
124 2.计数脉冲输入: C/~T0 = 0 内部时钟12分频信号
125 C/~T0 = 1 T0引脚信号
126 3.计数允许控制: (~GATE0 | ~INT0) & TR0 = 1 允许计数
127 (~GATE0 | ~INT0) & TR0 = 0 停止计数
128 4.中断允许: ET0 = 1 允许中断响应
129 ET0 = 0 禁止中断响应
130 5.计数溢出: 计数溢出时置TF0为1,进入中断服务程序时由硬件自动清0.
131 计数溢出时需由软件重装计数初值到TL0中.
132
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -