📄 test.lst
字号:
C51 COMPILER V7.01 TEST 09/17/2003 09:39:36 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE test.c OPTIMIZE(1,SPEED) REGFILE(.\dptest.ORC) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<REG52.h>
2 #include<intrins.h>
3 #include<absacc.h>
4 #include <VI2C_C51.H> /*包含VI2C软件包*/
5 #include<zf.h>
6
7 sbit SDA=P1^0;
8 sbit CLK=P1^1;
9 sbit KD_KEY = P1^2;
10 bit lcd_flag;
11
12 #define IOWR XBYTE[0XF800]
13 #define IORD XBYTE[0XF801]
14 #define IORS XBYTE[0XF802]
15
16 #define PCF8563 0xA2 /*定义器件地址*/
17 #define WRADDR 0x00
18 #define RDADDR 0x02
19
20 #define WC24C02 0xA0 /*定义器件地址*/
21 #define WRADR 0x00 /*指定操作地址*/
22 #define RDADR 0x00 /*指定写入数据*/
23
24 unsigned char code led[0x20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0
-x8e,0xbf,0x89,0x8C,0xc7,0x00};
25 //0-9,a-f,- H p l
26
27 void delay(unsigned int k)
28 {
29 1 unsigned int i,j;
30 1 for(i=0;i<k;i++)
31 1 for(j=0;j<100;j++);
32 1 }
33
34 void send(unsigned char a)
35 {
36 1 unsigned char i;
37 1 for(i=0;i<8;i++)
38 1 {
39 2 if(_crol_(a,i)&0x80)
40 2 SDA=1;
41 2 else
42 2 SDA=0;
43 2 CLK=0;
44 2 CLK=1;
45 2 }
46 1 }
47
48 void display(unsigned char display_buffer[5])
49 {
50 1 unsigned char display_bit;
51 1 unsigned char i,k;
52 1 display_bit=0x7f;
53 1 for(i=0;i<5;i++)
54 1 {
C51 COMPILER V7.01 TEST 09/17/2003 09:39:36 PAGE 2
55 2 k=led[display_buffer[i]];
56 2 send(k);
57 2 P1=display_bit;
58 2 delay(0x01);
59 2 P1=0xff;
60 2 display_bit=_cror_(display_bit,1);
61 2 }
62 1 display_bit=0x7f;
63 1 }
64
65 unsigned char key(void)
66 {
67 1 unsigned char buffer,display_bit,i;
68 1 buffer=0xff; //赋初值为0xff
69 1 delay(0x01); //延时去抖动
70 1 display_bit=0xfe; //扫描键盘
71 1 for(i=0;i<8;i++)
72 1 {
73 2 send(display_bit);
74 2 if(!KD_KEY) //是此键按下吗?
75 2 {
76 3 buffer=display_bit; //是,则保存其键值
77 3 return(buffer);
78 3 break; //退出
79 3 }
80 2 display_bit=_crol_(display_bit,1);
81 2 //检测下一键
82 2 }
83 1 }
84
85 void c_send(unsigned char a)
86 {
87 1
88 1 IORS=0x00;
89 1 IOWR=a;
90 1 delay(0x02);
91 1 }
92
93
94
95 void d_send(unsigned char b)
96 {
97 1 IORS=0x01;
98 1 IOWR=b;
99 1 delay(0x02);
100 1 }
101
102 void lcd(void)
103 {
104 1 c_send(0x38);
105 1 c_send(0x01);
106 1 c_send(0x06);
107 1 c_send(0x0c);
108 1 c_send(0x85);
109 1 d_send(0x44);
110 1 d_send(0x50);
111 1 d_send(0x2d);
112 1 d_send(0x2d);
113 1 d_send(0x35);
114 1 d_send(0x31);
115 1 c_send(0xc4);
116 1 d_send(0x5a);
C51 COMPILER V7.01 TEST 09/17/2003 09:39:36 PAGE 3
117 1 d_send(0x6c);
118 1 d_send(0x67);
119 1 d_send(0x2d);
120 1 d_send(0x2d);
121 1 d_send(0x4d);
122 1 d_send(0x43);
123 1 d_send(0x55);
124 1 }
125
126 main()
127 {
128 1 unsigned char a[5];
129 1 unsigned char key_i;
130 1 unsigned char td[5]={0x00,0x12,0x48,0x30,0x12};
131 1 unsigned char p[5]={0x0c,0x02,0x04,0x00,0x02};
132 1 ISendStr(PCF8563,WRADDR,td,0x5);
133 1 ISendStr(WC24C02,WRADR,p,5);
134 1 lcd_flag=0;
135 1 key_i=0xff; //赋初值为0xff
136 1
137 1 while(1)
138 1 {
139 2
140 2 send(0x00); //判断有键盘按
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -