📄 serial.lst
字号:
C51 COMPILER V7.07 SERIAL 08/06/2007 09:22:44 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN Serial.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil2\C51\BIN\C51.EXE Serial.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include "LM016L.H"
3
4 unsigned char RData[17],j;
5 unsigned char TData[] = "INT0 Interrupt .";
6 unsigned char *str;
7
8 ////////////////// LCD ////////////////////////
9
10 //初始化LCD
11 void LCD_Initial()
12 {
13 1 LCDE = 0;
14 1 LCD_Write(LCDCOMMAND,0x38);
15 1 LCD_Write(LCDCOMMAND,0x38);
16 1 LCD_SetDisplay(LCDSHOW | LCDNOCURSOR);
17 1 LCD_Write(LCDCOMMAND,LCDCLEARSCREEN);
18 1 LCD_SetInput(LCDACUP | LCDNOMOVE);
19 1 }
20 //内部等待函数
21 unsigned char LCD_Wait(void)
22 {
23 1 LCDRS = 0;
24 1 LCDRW = 1;
25 1 _nop_();
26 1 LCDE = 1;
27 1 _nop_();
28 1 //while(LCDDB & 0x80);
29 1 LCDE = 0;
30 1 return LCDDB;
31 1 }
32 //向LCD写入命令或数据
33 void LCD_Write(bit style, unsigned char input)
34 {
35 1 LCDE = 0;
36 1 LCDRS = style;
37 1 LCDRW = 0;
38 1 _nop_();
39 1 LCDDB = input;
40 1 _nop_();
41 1 LCDE = 1;
42 1 _nop_();
43 1 LCDE = 0;
44 1 _nop_();
45 1 LCD_Wait();
46 1 }
47 //设置显示模式
48 void LCD_SetDisplay(unsigned char DisplayMode)
49 {
50 1 LCD_Write(LCDCOMMAND,0x08 | DisplayMode);
51 1 }
52 //设置输入模式
53 void LCD_SetInput(unsigned char InputMode)
54 {
55 1 LCD_Write(LCDCOMMAND,0x04 | InputMode);
C51 COMPILER V7.07 SERIAL 08/06/2007 09:22:44 PAGE 2
56 1 }
57 void GotoXY(unsigned char x, unsigned char y)
58 {
59 1 if(y == 0)
60 1 {
61 2 LCD_Write(LCDCOMMAND,0x80 | x);
62 2 }
63 1 if(y == 1)
64 1 {
65 2 LCD_Write(LCDCOMMAND,0x80 | (x - 0x40));
66 2 }
67 1 }
68 void Print(unsigned char *str)
69 {
70 1 while(*str != '\0')
71 1 {
72 2 LCD_Write(LCDDB,*str);
73 2 str++;
74 2 }
75 1 }
76
77 ////////////////// 80C51 ////////////////////////
78
79 void Timer1_Initial()
80 {
81 1 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
82 1 TH1 = 0xFD; // 波特率9600
83 1 TL1 = 0xFD;
84 1
85 1 SCON = 0x50; // 设定串行口工作方式
86 1 PCON &= 0xef; // 波特率不倍增
87 1
88 1 TR1 = 1; // 启动定时器1
89 1 ES = 1; // 允许串口中断中断
90 1 EA = 1;
91 1 }
92
93 void INT0_Initial()
94 {
95 1 EX0 = 1; // INT0中断开
96 1 IT0 = 1; // INT0低电平触发(为1则为下降沿触发)
97 1 EA = 1;
98 1 }
99
100 void Timer1_interrupt() interrupt 4
101 {
102 1 EA = 0;
103 1 RI = 0;
104 1 RData[j] = SBUF;
105 1 j++;
106 1 EA = 1;
107 1 }
108
109 void INT0_interrupt() interrupt 0
110 {
111 1 EA = 0;
112 1 str = TData;
113 1 while(*str != '\0')
114 1 {
115 2 TI = 0;
116 2 SBUF = *str;
117 2 while(!TI);
C51 COMPILER V7.07 SERIAL 08/06/2007 09:22:44 PAGE 3
118 2 TI = 0;
119 2 str++;
120 2 }
121 1 EA = 1;
122 1 }
123
124 ////////////////// main ////////////////////////
125
126 void main()
127 {
128 1 LCD_Initial();
129 1 Timer1_Initial();
130 1 INT0_Initial();
131 1
132 1 while(1)
133 1 {
134 2 if(j > 15)
135 2 {
136 3 GotoXY(0,0);
137 3 RData[16] = '\0';
138 3 Print(RData);
139 3 j = 0;
140 3 }
141 2 }
142 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 329 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 38 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -