📄 serial.lst
字号:
C51 COMPILER V7.09 SERIAL 09/28/2004 10:20:01 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN Serial.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Serial.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************************************************
2 * 文件名: Serial.c *
3 * 文件说明: 读端口P0,如果数值改变,则将P0口读到的数送 *
4 * PC机显示。 *
5 ************************************************************/
6
7 #include "REG51.h"
8
9 unsigned char data PreValue; // 存放读P0口的先前值
10 unsigned char data ChangeFlag=0; // P0口数据改变标志
11
12 /************************************************************
13 * 函数原型: void Init_Serial(void) *
14 * 函数描述: 初始化串口,晶振为11.0592MHz,波特率为19200bps *
15 ************************************************************/
16 void Init_Serial(void)
17 {
18 1 SCON = 0x50; // 串口工作方式1
19 1 TMOD = (TMOD&0x0F)|0x20; // 选择定时器1方式2
20 1 PCON = 0x80; // 波特率倍增
21 1 TH1 = 0xFD; // 计数初值, 19200bps
22 1 TR1 = 1; // 启动定时器1
23 1 ES = 0;
24 1 }
25
26 /***********************************************************
27 * 函数原型: void Init_Time0(void) *
28 * 函数描述: 初始化定时器0,定时到就读P0口,如果读到的数 *
29 * 与上一次的不同,设置标志位 *
30 ***********************************************************/
31 void Init_Time0(void)
32 {
33 1 TMOD = (TMOD&0xF0)|0x01; // 定时器0工作方式1
34 1 TH0 = 0x0; // 装计数初值
35 1 TL0 = 0x0;
36 1 TR0 = 1; // 启动定时器0
37 1 ET0 = 1; // 开定时器0中断
38 1 EA = 1; // 开总中断
39 1 }
40
41 //--------------------------------------------------------//
42 //--------------- 主程序 ---------------//
43 //--------------------------------------------------------//
44 void main(void)
45 {
46 1 Init_Serial();
47 1 Init_Time0();
48 1 while(1)
49 1 {
50 2 if(ChangeFlag==0x01)
51 2 {
52 3 SBUF = PreValue; // 将P0口的值送PC显示
53 3 while(TI == 0);
54 3 TI = 0;
55 3 ChangeFlag = 0;
C51 COMPILER V7.09 SERIAL 09/28/2004 10:20:01 PAGE 2
56 3 }
57 2 }
58 1 }
59
60 /****************************************************
61 * 函数原型: void Time0_isr() interrupt 1 *
62 * 函数描述: 定时器0中断服务程序,读端口P0,然后 *
63 * 与先前值比较,若不等则置标志位 *
64 ****************************************************/
65 void Time0_isr() interrupt 1
66 {
67 1 unsigned char Temp;
68 1 TH0 = 0x0;
69 1 TL0 = 0x0;
70 1 P0 = P0|0xFF;
71 1 Temp = P0;
72 1 if(Temp != PreValue)
73 1 {
74 2 PreValue = Temp;
75 2 ChangeFlag = 0x01;
76 2 }
77 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 103 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -