📄 主程序.lst
字号:
C51 COMPILER V6.12 _鞒_序 08/09/2008 13:34:31 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE _鞒_序
OBJECT MODULE PLACED IN .\主程序.OBJ
COMPILER INVOKED BY: C:\Program Files\KEIL C\C51\BIN\C51.EXE .\主程序.c DEBUG OBJECTEXTEND
stmt level source
1
2 #include <REG51.H>
3 #include<absacc.h>
4 #include <stdio.h>
5 #include <STRING.H>
6 #include <MATH.H>
7 #define DB P0
8
9 #define uchar unsigned char
10 #define uint unsigned int
11
12 #include "Lcd1602.h"
13
14
15
16
17 //以上代码保留不要删除
18
19 uchar revlen ; //目前收到的字符的数目
20 //单片机初始化:
21 void InitialCpu()
22 {
23 1 //开串行中断
24 1 ET0=0; //关定时中断0
25 1 ET1=0; //关定时中断1
26 1 ES=1; //开串行中断
27 1 EX0=0; //开外部中断0
28 1 EX1=0; //开外部中断1
29 1 EA=1; //中断允许
30 1 IP=0x00; //中断优先级
31 1
32 1 //串行中断设置:
33 1 SCON=0x50; //SM0 SM1 SM2 REN =0101,模式1,允许接收;
34 1
35 1
36 1 //假设波特率19.2k,晶震为11.059M.
37 1 PCON=PCON | 0x80; //SMOD=1;
38 1 TMOD=0x20 ; //定时器1工作模式2,8位自动重装.当溢出后自动装载TH1到TL1.
39 1 TL1=0xFD;
40 1 TH1=0xFD; //初值
41 1 TR1=1; //启动订时器
42 1
43 1 }
44
45
46
47 //接收时要响应串行中断(向量号4),并判断是发送中断还是接收中断.
48 void uart() interrupt 4
49 {
50 1 uchar row;
51 1 uchar col;
52 1
53 1 if(RI==1)
54 1 {
55 2
C51 COMPILER V6.12 _鞒_序 08/09/2008 13:34:31 PAGE 2
56 2 RI=0; //软件清零
57 2 if(revlen>=32)
58 2 {
59 3 revlen=0;
60 3
61 3 }
62 2 if(revlen==0)
63 2 {
64 3 configure(0x01);
65 3 msec(100);
66 3 }
67 2
68 2 if(revlen<16)
69 2 {
70 3 row=0;
71 3 col=revlen;
72 3 }
73 2 else{
74 3 row=1;
75 3 col=revlen-16;
76 3 }
77 2
78 2 printchar(row,col, SBUF );
79 2 revlen=revlen+1;
80 2
81 2 }
82 1 if(TI==1)
83 1 {
84 2 TI=0; //软件清零
85 2
86 2
87 2 }
88 1 }
89
90
91
92 //接收时要响应串行中断(向量号4),并判断是发送中断还是接收中断.
93
94 /////
95 main()
96 {
97 1 unsigned char display=0x01;
98 1 unsigned char P2Copy;
99 1 unsigned char KeyNo;
100 1 InitialCpu();
101 1 msec(200);
102 1 LcdIni();
103 1
104 1 print(0,0,"hello world", strlen("hello world"));
105 1 msec(100);
106 1 print(1,0,"51MPU study" , strlen("51MPU study"));
107 1
108 1 SBUF='a';
109 1 revlen =0;
110 1 while(1)
111 1 {
112 2 //跑马灯
113 2 P1=display;
114 2 msec(50);
115 2 if(display<128)
116 2 display=display*2;
117 2 else display=0x01;
C51 COMPILER V6.12 _鞒_序 08/09/2008 13:34:31 PAGE 3
118 2
119 2 //按键:
120 2 P2Copy=P2;
121 2 P2Copy=P2Copy & 0xf8 ;
122 2 if(P2Copy !=0xf8)
123 2 {
124 3
125 3 //判断键盘编码
126 3 KeyNo=P2Copy & 0x08;
127 3 if(KeyNo==0)
128 3 {
129 4 configure(0x01);
130 4 msec(50);
131 4 print(0,0,"Key 1 Press", strlen("Key 1 Press"));
132 4 }
133 3
134 3
135 3 KeyNo=P2Copy & 0x10;
136 3 if(KeyNo==0)
137 3 {
138 4 configure(0x01);
139 4 msec(50);
140 4 print(0,0,"Key 2 Press", strlen("Key 2 Press"));
141 4 }
142 3
143 3
144 3 KeyNo=P2Copy & 0x20;
145 3 if(KeyNo==0)
146 3 {
147 4 configure(0x01);
148 4 msec(50);
149 4 print(0,0,"Key 3 Press", strlen("Key 3 Press"));
150 4 }
151 3
152 3
153 3 KeyNo=P2Copy & 0x40;
154 3 if(KeyNo==0)
155 3 {
156 4 configure(0x01);
157 4 msec(50);
158 4 print(0,0,"Key 4 Press", strlen("Key 4 Press"));
159 4 }
160 3
161 3 KeyNo=P2Copy & 0x80;
162 3 if(KeyNo==0)
163 3 {
164 4 configure(0x01);
165 4 msec(50);
166 4 print(0,0,"Key 5 Press", strlen("Key 5 Press"));
167 4 }
168 3
169 3 //等待弹起
170 3 while(1)
171 3 {
172 4 P2Copy=P2;
173 4 P2Copy=P2Copy & 0xf8 ;
174 4 if(P2Copy ==0xf8) break;
175 4 }
176 3
177 3 }
178 2
179 2 }
C51 COMPILER V6.12 _鞒_序 08/09/2008 13:34:31 PAGE 4
180 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 509 ----
CONSTANT SIZE = 84 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 5
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 + -