📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 09/30/2008 16:41:37 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*-------------------------
2 32(MICKEY) -->S1,S3 -->P0.5
3 33(KEY++) -->S2 -->P0.4
4 18(MICLED) -->D4 -->P2.0
5 31 -->SDA -->P0.6
6 30 -->SCL -->P0.7
7 5 -->RXD -->P3.0
8 7 -->TXD -->P3.1
9 -------------------------*/
10
11 #include <reg52.h>
12 #include "key.h"
13 #include "iic.h"
14 #include "delay.h"
15 #define ADDR 0x20 //定义读写地址
16
17 unsigned char OPEN[4] ={0X01,0X02,0X03,0XFC};
18 unsigned char CLOSE[4]={0X02,0X02,0X03,0XFC};
19 unsigned char BLINK[4]={0X03,0X02,0X05,0XFC};
20 unsigned char getflag[4];
21
22 unsigned char writedata[16];
23 unsigned char readdata[16];
24
25 unsigned char i=0;
26 unsigned char j=0;
27
28 unsigned char k=0;//循环计数变量
29
30
31 void InitBaudRate(void);//初始化波特率38400bps
32
33 bit CheckFlag(unsigned char *thedata,unsigned char *flag)
34 {
35 1 unsigned char i;
36 1 for(i=0;i<4;i++)
37 1 {
38 2 if(*thedata!=*flag) return 0;
39 2 else {thedata++;flag++;}
40 2 }
41 1 return 1;
42 1 }
43
44 void main()
45 {
46 1 MICLED=OFF; //LED默认熄灭
47 1 InitTimer2();
48 1 InitBaudRate();
49 1
50 1 while(1) //循环检测按键
51 1 {
52 2 KeyStatus();
53 2 KeyDeal();
54 2 }
55 1 }
C51 COMPILER V8.08 MAIN 09/30/2008 16:41:37 PAGE 2
56 void InitBaudRate(void) //38400bps
57 {
58 1 SCON =0X50;
59 1 TMOD =0X20;
60 1 TH1 =253;
61 1 TL1 =253;
62 1 PCON =0X80;
63 1 TR1 =1;
64 1 TI =0;
65 1 RI =0;
66 1 EA =1;
67 1 ES =1;
68 1 }
69
70
71 void ES_INTERRUPT(void) interrupt 4
72 {
73 1 if(RI==1)
74 1 {
75 2 //关闭中断
76 2 EA =0;
77 2 //数据暂存
78 2 getflag[i++] =SBUF;
79 2 if(i>3||SBUF==0XFC) i=0;
80 2 writedata[j]=SBUF;
81 2 if(j>15) j=0;
82 2 j++;
83 2 //判断读写
84 2 if(SBUF==0X2A)//读写开始字符*
85 2 {
86 3 j=0;
87 3 i=0;
88 3 }
89 2 if(SBUF==0X23)//读写结束字符#
90 2 {
91 3 WritePages(ADDR,writedata,j);
92 3 //WriteNByte(ADDR,writedata,j);
93 3 ReadNByte(ADDR,readdata,j);
94 3 for(k=0;k<j;k++)
95 3 {
96 4 SBUF=readdata[k];
97 4 while(!TI);
98 4 TI=0;
99 4 }
100 3 j=0;
101 3 i=0;
102 3 }
103 2 //判断命令
104 2 if(CheckFlag(getflag,OPEN)) Setkeyvalue(2);
105 2 else if(CheckFlag(getflag,CLOSE)) Setkeyvalue(3);
106 2 else if(CheckFlag(getflag,BLINK)) Setkeyvalue(1);
107 2
108 2 //开启中断
109 2 RI =0;
110 2 EA =1;
111 2 }
112 1
113 1 }
114
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.08 MAIN 09/30/2008 16:41:37 PAGE 3
CODE SIZE = 352 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 51 6
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 + -