51_LanQiaoBei/模板/zuolan_v1标志位/prj/Listings/main.lst
2025-04-13 01:02:19 +08:00

184 lines
5.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.60.7.0 MAIN 03/10/2025 18:03:53 PAGE 1
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Objects\main.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\user\main.c OPTIMIZE(8,SPEED) BROWSE INCDIR(..\driver;..\user) DEBUG
-OBJECTEXTEND PRINT(.\Listings\main.lst) TABS(2) OBJECT(.\Objects\main.obj)
line level source
1 #include "main.h"
2 /* LED与数码管 */
3 unsigned char ucLed[8] = {0, 0, 0, 0, 0, 0, 0, 0};
4 unsigned char Seg_Pos;
5 unsigned char Seg_Buf[8] = {10, 10, 10, 10, 10, 10, 10, 10};
6 unsigned char Seg_Point[8] = {0, 0, 0, 0, 0, 0, 0, 0};
7
8 /* 串口数据*/
9 unsigned char Uart_Buf[10];
10 unsigned char Uart_Rx_Index;
11 bit Uart_flag;
12 unsigned char Sys_Tick;
13 /* 时间*/
14 unsigned char ucRtc[3] = {11, 11, 11};
15 unsigned int time_all_1s;
16
17 /* 数据 */
18 unsigned int Freq;
19
20 void Data_Proc()
21 {
22 1 if (time_all_1s % 50 == 0)
23 1 {
24 2 // 时间读取
25 2 }
26 1 if (time_all_1s % 100 == 0)
27 1 {
28 2 // AD读取
29 2 }
30 1 if (time_all_1s % 500 == 0)
31 1 {
32 2 // 温度读取
33 2 }
34 1 }
35 /* 键盘处理*/
36 void Key_Proc()
37 {
38 1 static unsigned char Key_Val, Key_Down, Key_Up, Key_Old;
39 1 if (time_all_1s % 10)
40 1 return;
41 1 Key_Val = Key_Read();
42 1 Key_Down = Key_Val & (Key_Old ^ Key_Val);
43 1 Key_Up = ~Key_Val & (Key_Old ^ Key_Val);
44 1 Key_Old = Key_Val;
45 1 }
46
47 /* 数码管处理*/
48 void Seg_Proc()
49 {
50 1 if (time_all_1s % 20)
51 1 return;
52 1 }
53 void Led_Proc() {}
54 void Uart_Proc()
C51 COMPILER V9.60.7.0 MAIN 03/10/2025 18:03:53 PAGE 2
55 {
56 1 if (Uart_Rx_Index == 0)
57 1 return;
58 1 if (Sys_Tick >= 10)
59 1 {
60 2 Sys_Tick = Uart_flag = 0;
61 2
62 2 memset(Uart_Buf, 0, Uart_Rx_Index);
63 2 Uart_Rx_Index = 0;
64 2 }
65 1 }
66 void Timer0_Init(void) // 1毫秒@12.000MHz
67 {
68 1 AUXR &= 0x7F; // 定时器时钟12T模式
69 1 TMOD &= 0xF0; // 设置定时器模式
70 1 TMOD |= 0x05;
71 1 TL0 = 0; // 设置定时初始值
72 1 TH0 = 0; // 设置定时初始值
73 1 TF0 = 0; // 清除TF0标志
74 1 TR0 = 1; // 定时器0开始计时
75 1 EA = 1;
76 1 }
77
78 void Timer1_Init(void) // 1毫秒@12.000MHz
79 {
80 1 AUXR &= 0xBF; // 定时器时钟12T模式
81 1 TMOD &= 0x0F; // 设置定时器模式
82 1 TL1 = 0x18; // 设置定时初始值
83 1 TH1 = 0xFC; // 设置定时初始值
84 1 TF1 = 0; // 清除TF1标志
85 1 TR1 = 1; // 定时器1开始计时
86 1 ET1 = 1; // 使能定时器1中断
87 1 EA = 1;
88 1 }
89
90 void Timer1_Isr(void) interrupt 3
91 {
92 1 unsigned char i;
93 1 if (++time_all_1s == 1000)
94 1 {
95 2 time_all_1s = 0;
96 2 Freq = TH0 << 8 | TL0;
97 2 TH0 = TL0 = 0;
98 2 }
99 1 if (Uart_flag)
100 1 Sys_Tick++;
101 1 Seg_Pos = (++Seg_Pos) % 8;
102 1 Seg_Disp(Seg_Pos, Seg_Buf[Seg_Pos], Seg_Point[Seg_Pos]);
103 1 for (i = 0; i < 8; i++)
104 1 Led_Disp(i, ucLed[i]);
105 1 }
106 void Uart1_Isr(void) interrupt 4
107 {
108 1 if (RI)
109 1 {
110 2 Uart_flag = 1;
111 2 Sys_Tick = 0;
112 2 Uart_Buf[Uart_Rx_Index] = SBUF;
113 2 Uart_Rx_Index++;
114 2 RI = 0;
115 2 }
116 1 if (Uart_Rx_Index > 10)
C51 COMPILER V9.60.7.0 MAIN 03/10/2025 18:03:53 PAGE 3
117 1 Uart_Rx_Index = 0;
118 1 }
119 void Delay750ms(void) //@12.000MHz
120 {
121 1 unsigned char data i, j, k;
122 1
123 1 _nop_();
124 1 _nop_();
125 1 i = 35;
126 1 j = 51;
127 1 k = 182;
128 1 do
129 1 {
130 2 do
131 2 {
132 3 while (--k)
133 3 ;
134 3 } while (--j);
135 2 } while (--i);
136 1 }
137
138 void main()
139 {
140 1 System_Init();
141 1 Timer0_Init();
142 1 Uart1_Init();
143 1 Timer1_Init();
144 1 Set_Rtc(ucRtc);
145 1 rd_temperature();
146 1 Delay750ms();
147 1 while (1)
148 1 {
149 2 Data_Proc();
150 2 Key_Proc();
151 2 Seg_Proc();
152 2 Uart_Proc();
153 2 Led_Proc();
154 2 }
155 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 369 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 48 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)