📄 键盘.lst
字号:
C51 COMPILER V7.10 键臺 05/16/2008 06:36:22 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 键臺
OBJECT MODULE PLACED IN .\键盘.obj
COMPILER INVOKED BY: F:\KeilC安装软件\安装\C51\BIN\C51.EXE F:\c语言练习\键盘控制灯显示\键盘.c BROWSE DEBUG OBJECTEXTEND
-PRINT(.\键盘.lst) OBJECT(.\键盘.obj)
line level source
1 #include"reg52.h"
2 #include"intrins.h"
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 void delay(uchar del);
7 uchar jzaj(void);
8 void ajcl(uchar jz);
9
10 void main()
11 {
12 1 uchar jz;
13 1 while(1)
14 1 {
15 2 jz=jzaj();
16 2 if(jz)
17 2 ajcl(jz);
18 2 }
19 1 }
20
21 void delay(uchar del)
22 {
23 1 uchar i;
24 1 for(;del>0;del--)
25 1 for(i=0;i<125;i++)
26 1 {;}
27 1 }
28 uchar jzaj(void)
29 {
30 1 uchar hz,lz;
31 1 P1=0xf0; //置所有行为低电平,行扫描,列线输入(此时)
32 1 if((P1&0xf0)!=0xf0) //判断是否有有键按下(读取列的真实状态,若第4列有键按下则P1的值会变成0111
-0000),有往下执行
33 1 {
34 2 delay(10); //延时去抖动(10ms)
35 2 if((P1&0xf0)!=0xf0) //再次判断列中是否是干扰信号,不是则向下执行
36 2 {
37 3 hz=0xfe; //逐行扫描初值(即先扫描第1行)
38 3 while((hz&0x10)!=0) //行扫描完成时(即4行已经全部扫描完成)sccode为1110 1111 停止while程序
-
39 3 {
40 4 P1=hz; //输出行扫描码
41 4 if ((P1&hz)!=hz) //***(P2&0xf0)!=0xf0***也可这样 本行有键按下(即P1(真实的状态)的高四位不全
-为1)
42 4 {
43 5 lz=(P1&0xf0)|0x0f; //列
44 5 while(P1&0xf0!=0xf0);
45 5 return((~hz)|(~lz)); //返回行和列
46 5 break; //有按键返回 提前退出循环
47 5
48 5 }
49 4 else //所扫描的行没有键按下,则扫描下一行,直到4行都扫描,此时sccode值为1110 1111
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -