📄 led_key.src
字号:
; .\Led_key.SRC generated from: ..\SourceFile\Led_key.c
; COMPILER INVOKED BY:
; C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Led_key.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Led_key.lst) SRC(.\Led_key.SRC)
$NOMOD51
NAME LED_KEY
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
IE DATA 0A8H
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
AUXR DATA 08EH
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
DISPLAY0 BIT 090H.3
ET0 BIT 0A8H.1
DISPLAY1 BIT 090H.4
ET1 BIT 0A8H.3
TF0 BIT 088H.5
DISPLAY2 BIT 090H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
DISPLAY3 BIT 090H.6
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
LED BIT 090H.7
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
SDA BIT 090H.0
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
IPH DATA 0B7H
SCL BIT 090H.1
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2MOD DATA 0C9H
T2CON DATA 0C8H
KEY BIT 090H.2
SADEN DATA 0B9H
RXD BIT 0B0H.0
SADDR DATA 0A9H
CKCON DATA 08FH
TXD BIT 0B0H.1
AUXR1 DATA 0A2H
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?_SendData?LED_KEY SEGMENT CODE
?PR?KeyCheck?LED_KEY SEGMENT CODE
?XD?KeyCheck?LED_KEY SEGMENT XDATA OVERLAYABLE
?PR?_led_key_led_control?LED_KEY SEGMENT CODE
?PR?_led_key_led_display_control?LED_KEY SEGMENT CODE
?XD?_led_key_led_display_control?LED_KEY SEGMENT XDATA OVERLAYABLE
?BI?_led_key_led_display_control?LED_KEY SEGMENT BIT OVERLAYABLE
?PR?led_key_key_check?LED_KEY SEGMENT CODE
?XD?led_key_key_check?LED_KEY SEGMENT XDATA OVERLAYABLE
?C_INITSEG SEGMENT CODE
?CO?LED_KEY SEGMENT CODE
?DT?LED_KEY SEGMENT DATA
?BI?LED_KEY SEGMENT BIT
?DT?_SendData?LED_KEY SEGMENT DATA OVERLAYABLE
EXTRN CODE (_msg_queue_in)
EXTRN CODE (_delay)
PUBLIC LED_KEY_SIGN
PUBLIC KeyCounter
PUBLIC KeyIntervalSafeguard
PUBLIC g_KeyStore
PUBLIC led_key_key_check
PUBLIC ?_led_key_led_display_control?BIT
PUBLIC ?_led_key_led_display_control?BYTE
PUBLIC _led_key_led_display_control
PUBLIC _led_key_led_control
RSEG ?XD?KeyCheck?LED_KEY
?KeyCheck?BYTE:
counter?142: DS 1
RSEG ?XD?_led_key_led_display_control?LED_KEY
?_led_key_led_display_control?BYTE:
LedDisplayIndex?344: DS 1
value?346: DS 1
RSEG ?BI?_led_key_led_display_control?LED_KEY
?_led_key_led_display_control?BIT:
boDp?345: DBIT 1
RSEG ?XD?led_key_key_check?LED_KEY
?led_key_key_check?BYTE:
i?448: DS 1
RSEG ?DT?LED_KEY
g_KeyStore: DS 1
KeyIntervalSafeguard: DS 1
KeyCounter: DS 1
RSEG ?BI?LED_KEY
LED_KEY_SIGN: DBIT 1
RSEG ?DT?_SendData?LED_KEY
counter?041: DS 1
RSEG ?CO?LED_KEY
KeyMap:
DB 001H
DB 002H
DB 003H
DB 004H
DB 005H
DB 006H
DB 007H
DB 008H
LedDisplayMap:
DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 099H
DB 092H
DB 082H
DB 0F8H
DB 080H
DB 090H
DB 088H
DB 083H
DB 0C6H
DB 0A1H
DB 086H
DB 08EH
DB 040H
DB 079H
DB 024H
DB 030H
DB 019H
DB 012H
DB 002H
DB 078H
DB 000H
DB 010H
DB 008H
DB 003H
DB 046H
DB 021H
DB 006H
DB 00EH
RSEG ?C_INITSEG
DB 0C1H, LED_KEY_SIGN + 000H ; bit-init
DB 001H
DB KeyCounter
DB 000H
DB 001H
DB KeyIntervalSafeguard
DB 000H
DB 001H
DB g_KeyStore
DB 000H
; /*************************************************/
;
; /********************显示与键盘接口********/
;
; /*************2002年12月13日*******************/
;
; /************WROTE BY WANGSW********************/
; #include "reg52x2.h"
; #include <intrins.h>
;
; #include "define.h"
;
; #include "led_key.h"
;
; #define KEY_SHORT_INTERVAL 2
; #define KEY_LONG_INTERVAL 40
;
; sbit SDA = P1^0; /*模拟串行转并行口,下降沿有效,输出为低电平可控点亮*/
; sbit SCL = P1^1; /*模拟串并行转换的时钟信号线*/
;
; sbit KEY = P1^2; /*键盘,低电平有效,检测位*/
;
; sbit DISPLAY0 = P1^3; /*EBIT4, 低电平有效*/
; sbit DISPLAY1 = P1^4; /*EBIT3*/
; sbit DISPLAY2 = P1^5; /*EBIT2*/
; sbit DISPLAY3 = P1^6; /*EBIT1*/
;
; sbit LED = P1^7; /*EBIT0,低电平有效*/
;
; bool LED_KEY_SIGN = FALSE;
;
; byte data KeyCounter = 0;
;
; byte data KeyIntervalSafeguard = 0; /*用于连续两个按键速度过快导致按键混乱*/
;
; byte data g_KeyStore = 0x00;
;
; static byte code KeyMap[8] = /*键盘转换*/
; {
; KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8
; };
;
; static byte code LedDisplayMap[2][16] =
; {
; {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E},
; {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0x08, 0x03, 0x46, 0x21, 0x06, 0x0E}
; };
;
; static void SendData(byte value);
;
; static byte KeyCheck(void); /*键值检测*/
;
;
; /******************************************************************************************
; *函数名: SendData
; *参数: value 需要进行串并转换的数据,是一字节8位数据
; *返回值: 无
; *描述: 把数据value按照从高位到低位串行发送到串并转换电路输
; 入端,主要可以用来协助完成底层LED显示
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; static void SendData(byte value)
RSEG ?PR?_SendData?LED_KEY
_SendData:
USING 0
; SOURCE LINE # 63
;---- Variable 'value?040' assigned to Register 'R7' ----
; {
; SOURCE LINE # 64
; byte data counter;
; SCL = 1;
; SOURCE LINE # 66
SETB SCL
; for(counter = 0; counter < 8; counter++)
; SOURCE LINE # 67
CLR A
MOV counter?041,A
?C0001:
; {
; SOURCE LINE # 68
; if(value & 0x80) /*判断数据*/
; SOURCE LINE # 69
MOV A,R7
JNB ACC.7,?C0004
; {
; SOURCE LINE # 70
; SDA = 1;
; SOURCE LINE # 71
SETB SDA
; }
; SOURCE LINE # 72
SJMP ?C0005
?C0004:
; else
; {
; SOURCE LINE # 74
; SDA = 0;
; SOURCE LINE # 75
CLR SDA
; }
; SOURCE LINE # 76
?C0005:
; SCL = 0; /*产生时钟动作*/
; SOURCE LINE # 77
CLR SCL
; SCL = 1;
; SOURCE LINE # 78
SETB SCL
; value = value << 1;
; SOURCE LINE # 79
MOV A,R7
ADD A,ACC
MOV R7,A
; }
; SOURCE LINE # 80
INC counter?041
MOV A,counter?041
CJNE A,#08H,?C0001
; }
; SOURCE LINE # 81
?C0006:
RET
; END OF _SendData
;
;
; /******************************************************************************************
; *函数名: KeyCheck
; *参数: 无
; *返回值: counter 返回键值
; ERROR 返回出错信息
; *描述: 通过扫描键盘返回按下的按键号
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; static byte KeyCheck(void)
RSEG ?PR?KeyCheck?LED_KEY
KeyCheck:
USING 0
; SOURCE LINE # 93
; {
; SOURCE LINE # 94
; byte counter;
; SDA = 1; /*注意,原来数据为0,现在为1*/
; SOURCE LINE # 96
SETB SDA
; for(counter = 0; counter < 8; counter++) /*r先将扫描线上都置为高电平*/
; SOURCE LINE # 97
CLR A
MOV DPTR,#counter?142
MOVX @DPTR,A
?C0007:
; {
; SOURCE LINE # 98
; SCL = 0;
; SOURCE LINE # 99
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -