⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led_key.src

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\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 + -