📄 keyled.lst
字号:
C51 COMPILER V8.02 KEYLED 06/18/2008 14:42:38 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYLED
OBJECT MODULE PLACED IN .\keyled.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\c程序\keyled.c DEBUG OBJECTEXTEND PRINT(.\keyled.lst) OBJECT(.\keyled.ob
-j)
line level source
1 //*******************************************************************
2 //***此程序为调试通过的源程序
3 //*******************************************************************
4 #include"at89x52.h"
*** WARNING C318 IN LINE 4 OF ..\c程序\keyled.c: can't open file 'at89x52.h'
5 #include<intrins.h>
6 #define nop _nop_() /* 定义空操作指令 */
7 sbit en =P2^7; /*DTLED-6显示芯片使能端*/
*** ERROR C202 IN LINE 7 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
8 sbit dout=P2^6; /*DTLED-6显示芯片数据读入端*/
*** ERROR C202 IN LINE 8 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
9 sbit clk=P2^5; /*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
*** ERROR C202 IN LINE 9 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
10 bit FLAG0=0; /*位标号FLAG0=1键盘扫描回应*/
11 static const char tab[16]={0x01,0x02,0x03,0x0a, /*键盘码00,01,02,03,*/
12 0x04,0x05,0x06,0x0b, /*键盘码04,05,06,07,*/
13 0x07,0x08,0x09,0x0c, /*键盘码08,09,0a,0b,*/
14 0x0e,0x00,0x0f,0x0d};/*键盘码0c,0d,0e,0f*/
15 unsigned char dispbuf[9]; /*显示值存放阵列*/
16 char m=0,ptr=0; /*PTR键盘扫描指标,ptr1显示器扫描指标*/
17 void delay (unsigned int value) /*延时副程式*/
18 {
19 1 while (value!=0) value--; /*10US延时*/
20 1 }
21 void tsled(void); /*串行发送到DTLED-6副程式*/
22 void scan(void); /*键盘扫描副程式*/
23 void clear(void); /*清除按键存放/显示器阵列dispbuf[]副副程式*/
24 void temp(void);
25 void xch(void); /*宣告按键存放/显示器阵列dispbuf[]右键滚入副程式*/
26 /***********************************************************************/
27 main() /*主程式*/
28 {
29 1 dispbuf[0]=0x00; /*小数点位*/
30 1 dispbuf[7]=0x01; /*ID号码*/
31 1 dispbuf[8]=0x01; /*蜂鸣器设定开/二次分频*/
32 1 lloop: scan(); /*呼叫键盘扫描副程式有按FLAG0会为1*/
33 1 if(FLAG0==1) /*判断有按键输入否?*/
34 1 temp();
35 1 goto lloop;
36 1 }
37 //******************************************************************
38 void scan(void) /*扫描键盘副程式*/
39 {char a1=0xef,i; /*A1=0XF7列扫描初值,I行*/
40 1 FLAG0=0; /*设按键回应旗号为0,键盘扫描计数指标为0*/
41 1 ptr=0;
42 1 for(i=0;i<4;i++) /*键盘4个扫描列*/
43 1 {
44 2 P0=a1; /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
*** ERROR C202 IN LINE 44 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
45 2 m=P0;
*** ERROR C202 IN LINE 45 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
46 2 switch(m&0x0f) /*取行的高4位元,侦测那一行被按*/
47 2 {
48 3 case 0x07: ptr=i*4; /*第一行被按否?是则扫描指标=列X4*/
C51 COMPILER V8.02 KEYLED 06/18/2008 14:42:38 PAGE 2
49 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
50 3 break; /*跳出此循环*/
51 3 case 0x0b: ptr=i*4+1; /*第二行被按否?是则扫描指标=列X4+1*/
52 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
53 3 break; /*跳出此循环*/
54 3 case 0x0d: ptr=i*4+2; /*第三行被按否?是则扫描指标=列X4+2*/
55 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
56 3 break; /*跳出此循环*/
57 3 case 0x0e: ptr=i*4+3; /*第四行被按否?是则扫描指标=列X4+3*/
58 3 FLAG0=1; /*是则设FLAG0=1表有按键输入*/
59 3 default: break; /*跳出此循环*/
60 3 }
61 2 if(FLAG0==1)break; /*不为1,则扫描列右移,扫描下一列*/
62 2 a1=a1<<1|0x01; /*高位补1,由于P1.7~P1.4未接+5V,而是由指令加载高电平*/
63 2 }
64 1 } /*返回主程式*/
65 /***********************************************************************/
66 void temp(void)
67 {
68 1 dispbuf[0]=0x00; /*小数点位*/
69 1 {
70 2 switch(tab[ptr]) /*是则测试ptr键盘扫描计数器指标至TAB[]取到的键盘码*/
71 2 {
72 3 case 0x0e:
73 3 clear(); /*是否按“#”是则呼叫清除显示器CLEAR*/
74 3 break; /*跳出此循环*/
75 3 default:
76 3 xch(); /*以上均不是则为数字键呼叫XCH作右键滚入*/
77 3 break; /*跳出此循环*/
78 3 } /*跳出SWITCH*/
79 2 delay(100); /*按钮抗机械反弹跳*/
80 2 while(m==P0); /*按钮放开否?*/
*** ERROR C202 IN LINE 80 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
81 2 tsled(); /*串行发送到DTLED-6副程式*/
82 2 }
83 1 } /*返回上一层程式*/
84 /******************************************************/
85 void clear(void) /*清除显示器dispbuf[]为00副程式*/
86 {char c; /*宣告变数*/
87 1 for(c=1;c<7;c++) /*将00存入显示阵列dispbuf[]*/
88 1 {dispbuf[c]=0x00;
89 2 }
90 1 } /*返回上一层程式*/
91 /****************************************************/
92 void xch(void) /*显示向右移动副程式*/
93 {char c; /*宣告变数*/
94 1 for(c=6;c>0;c--)
95 1 {dispbuf[c]=dispbuf[c-1];/*将显示器dispbuf[]移位交换,dispbuf[3]->dispbuf[4]->dispbuf[5]...*/
96 2 }
97 1 dispbuf[0]=0; /*有安键时,小数点不亮*/
98 1 dispbuf[1]=tab[ptr]; /*新的按键值存入dispbuf[1],最低位*/
99 1 } /*返回上一层程式*/
100 /*********************************************************************/
101 //串行发送DTLED-6显示
102 //dispbuf0-dispbuf1-dispbuf2-dispbuf3-dispbuf4-dispbuf5-dispbuf6-dispbuf7-dispbuf8
103 // 小数点 - 数码管1- 数码管2- 数码管3- 数码管4- 数码管5- 数码管6-ID识别码-BZ识别码
104 //00000xxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx
105 //小数点=1~6,其它为不显示
106 //数码管1-6=0~15,
107 //ID识别码=0~15
108 //BZ识别码=BZ.3为蜂鸣输出控制位,0=关闭,1=打开
109 // BZ0~2为蜂鸣频率输出设定为,000=不分频, 最高频率输出=4800Hz;
C51 COMPILER V8.02 KEYLED 06/18/2008 14:42:38 PAGE 3
110 // 001=一次分频,频率输出=4800/ 2 =2400Hz;
111 // 010=二次分频,频率输出=4800/ 4 =1200Hz;
112 // 011=三次分频,频率输出=4800/ 8 =600Hz;
113 // 100=四次分频,频率输出=4800/ 16=300Hz;
114 // 101=五次分频,频率输出=4800/ 32=150Hz;
115 // 110=六次分频,频率输出=4800/ 64=75Hz;
116 // 111=七次分频,频率输出=4800/128=38Hz;
117 //======================================================================
118 void tsled(void) /*串行发送DTLED-6显示副程式*/
119 { char ts0,i,j;
120 1 clk=0;
*** ERROR C202 IN LINE 120 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
121 1 en=0;
*** ERROR C202 IN LINE 121 OF ..\C程序\KEYLED.C: 'en': undefined identifier
122 1 delay(10);
123 1 for(j=0;j<9;j++)
124 1 { ts0=dispbuf[j];
125 2 for(i=0;i<4;i++)
126 2 {
127 3 clk=1;
*** ERROR C202 IN LINE 127 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
128 3 ts0=ts0<<1;
129 3 if(AC==1)
*** ERROR C202 IN LINE 129 OF ..\C程序\KEYLED.C: 'AC': undefined identifier
130 3 dout=1;
*** ERROR C202 IN LINE 130 OF ..\C程序\KEYLED.C: 'dout': undefined identifier
131 3 else dout=0;
*** ERROR C202 IN LINE 131 OF ..\C程序\KEYLED.C: 'dout': undefined identifier
132 3 clk=0;
*** ERROR C202 IN LINE 132 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
133 3 nop;
134 3 delay(3);
135 3 }
136 2 }
137 1 en=1;
*** ERROR C202 IN LINE 137 OF ..\C程序\KEYLED.C: 'en': undefined identifier
138 1 } /*返回主程式*/
139 /******************************************************************/
C51 COMPILATION COMPLETE. 1 WARNING(S), 14 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -