📄 electric.lst
字号:
C51 COMPILER V7.06 ELECTRIC 05/18/2009 02:01:18 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ELECTRIC
OBJECT MODULE PLACED IN electric.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE electric.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <absacc.h>
3
4 #define N8155CMD XBYTE[0x1000]
5 #define PA XBYTE[0x1001]
6 #define PB XBYTE[0x1002]
7
8
9 sbit speaker=P1^4;
10
11 void delay_MS(unsigned int count)//延时函数 延时=1ms*count
12 {
13 1 unsigned int i,j;
14 1 for(i=0;i<count;i++)
15 1 for(j=0;j<120;j++);
16 1 }
17
18 int keyscan(void)//键盘扫描函数,使用行列反转扫描法
19 {
20 1 unsigned char cord_h,cord_l;//行列值
21 1 N8155CMD=0x03;
22 1 PA=0x00;
23 1 PB=0x0f;
24 1 cord_l=PB;
25 1 N8155CMD=0x01;
26 1 if(cord_l!=0x0f) //先检测有无按键按下
27 1 {
28 2 delay_MS(5); //去抖动干扰
29 2 cord_l=PB; //读入列线值
30 2 if(cord_l!=0x0f)
31 2 {
32 3
33 3 cord_l|=0x00;
34 3 PA|=0xf0;
35 3 N8155CMD=0x00;
36 3 cord_h=PA&0xf0; //读入行线值
37 3 return(cord_l+cord_h);//键盘最后组合码值并返回
38 3 }
39 2 }
40 1 else return(0xff); //否则返回固定值0xff
41 1 }
42
43
44 void main()
45 {
46 1 TMOD=0x01; //定时器/计数器方式1
47 1 EA=1; //允许中断
48 1 ET0=1; //定时器/计数器0
49 1 TH0=0; //设定初值
50 1 TL0=0;
51 1 TR0=1; //开始定时
52 1 while(1);
53 1 }
54
55
C51 COMPILER V7.06 ELECTRIC 05/18/2009 02:01:18 PAGE 2
56 void Timer0_int() interrupt 1 //定时器0中断方式
57 {
58 1
59 1 switch(keyscan()) //判断按键
60 1 {
61 2 case 0x7e: TH0=64021/256; TL0=64021%256; break;
62 2 case 0x7d: TH0=64103/256; TL0=64103%256; break;
63 2 case 0x7b: TH0=64260/256; TL0=64260%256; break;
64 2 case 0x77: TH0=64400/256; TL0=64400%256; break;
65 2 case 0xbe: TH0=64522/256; TL0=64522%256; break;
66 2 case 0xbd: TH0=64620/256; TL0=64620%256; break;
67 2 case 0xbb: TH0=64684/256; TL0=64684%256; break;
68 2 case 0xb7: TH0=64777/256; TL0=64777%256; break;
69 2 case 0xde: TH0=64840/256; TL0=64840%256; break;
70 2 case 0xdd: TH0=64898/256; TL0=64898%256; break;
71 2 case 0xdb: TH0=64968/256; TL0=64968%256; break;
72 2 case 0xd7: TH0=65030/256; TL0=65030%256; break;
73 2 case 0xee: TH0=65078/256; TL0=65078%256; break;
74 2 case 0xed: TH0=65110/256; TL0=65110%256; break;
75 2 case 0xeb: TH0=65157/256; TL0=65157%256; break;
76 2 case 0xe7: TH0=65178/256; TL0=65178%256; break;
77 2 default: ET0=0; speaker=0;
78 2 }
79 1 speaker=!speaker;
80 1
81 1 }
82
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 366 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -