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

📄 6t.lst

📁 非常实用的电子单片机设计程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
                                                                    页     1
                                                                    01-29-03
                                                                    01:37:35
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;                 *************************************
            ;                 *        (SEND.ASM)               *
            ;                 *       十五路遥控发送控制器        *
            ;                 *              2001.7.18            *
            ;                 *************************************
            ;
            ;**********************************************************************
            ;*                                                                    *
            ;*           KEYX0  P1.0    1             40    VCC                   *
            ;*           KEYX1  P1.1    2             39    P0.0  KEYY0           *
            ;*           KEYX2  P1.2    3             38    P0.1  KEYY1           *
            ;*           KEYX3  P1.3    4             37    P0.2  KEYY2           *
            ;*                  P1.4    5             36    P0.3  KEYY3           *
            ;*                  P1.5    6             35    P0.4  KEYY4           *
            ;*                  P1.6    7             34    P0.5  KEYY5           *
            ;*                  P1.7    8             33    P0.6  KEYY6           *
            ;*                  RST     9             32    P0.7  KEYY7           *
            ;*           	    P3.0    10   MCS-51   31    EA    VDD             *
            ;*                  P3.1    11            30    ALE                   *
            ;*                  P3.2    12            29    PSEN                  *
            ;*                  P3.3    13            28    P2.7                  *
            ;*                  P3.4    14            27    P2.6                  *
            ;*   REMOTEOUT T1   P3.5    15            26    P2.5                  *
            ;*                  P3.6    16            25    P2.4                  *
            ;*                  P3.7    17            24    P2.3                  *
            ;*                 XTAL2    18            23    P2.2                  *
            ;*                 XTAL1    19            22    P2.1                  *
            ;*                   VSS    20            21    P2.0                  *
            ;*                                                                    *
            ;*                                                                    *
            ;**********************************************************************
            ;
            ;
            ;
            ;伪定义
                    KEYX0           EQU     P1.0    ;P1.0 -- P1.3位键盘行扫描
                    KEYX1           EQU     P1.1    ;本系统采用4 * 8 键盘阵列
                    KEYX2           EQU     P1.2
                    KEYX3           EQU     P1.3
                    KEYY            EQU     P0      ;P0 口键盘列扫描
            ;
            ;
            ;
            ;
            ;*************************************
            ;*                                   *
            ;*      主程序和中断程序入口         *
            ;*                                   *


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例6\6T.ASM     
 
                                                                    页     2
                                                                    01-29-03
                                                                    01:37:35
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;*************************************
            		ORG     0000H 		   	;程序执行开始地址
0000 014D   		AJMP    START               	;跳至START执行
            		ORG     0003H      		;外中断0中断入口地址
0003 32              	RETI    	               	;中断返回(不开中断)
            		ORG     000BH     		;定时器T0中断入口地址
000B 32     		RETI              	        ;中断返回(不开中断)
                            ORG     0013H  			;外中断1中断入口地址
0013 32             	RETI              	        ;中断返回(不开中断)
            		ORG     001BH     		;定时器T1中断入口地址
001B 02005C 		LJMP    INTT1     	        ;跳至INTT1中断服务程序
            		ORG     0023H     		;串行口中断入口地址
0023 32     		RETI              	        ;中断返回(不开中断)
            		ORG     002BH     		;定时器T2中断入口地址
002B 32     		RETI              	        ;中断返回(不开中断)
            ;
            ;*************************************
            ;*                                   *
            ;*       初 始 化 程 序              *
            ;*                                   *
            ;*************************************
002C E4     CLEARMEMIO:     CLR	A			;A清0
002D 14     		DEC	A			;A为#0FFH
002E F580   		MOV     P0,A			;P0-P3口置1
0030 F590                   MOV     P1,A			;
0032 F5A0                   MOV     P2,A			;
0034 F5B0                   MOV     P3,A			;
0036 C2B5                   CLR     P3.5			;关遥控输出
0038 758170 CLEARMEM:       MOV     SP,#70H         	;设堆栈基址为70H
003B 75A800                 MOV     IE,#00H          	;关所有中断
003E 75B801                 MOV     IP,#01H			;设优先级
0041 758922                 MOV     TMOD,#22H		;8位自动重装初值模式
0044 758DF3                 MOV     TH1,#0F3H		;定时为13微秒初值
0047 758BF3                 MOV     TL1,#0F3H		;
004A D2AF                   SETB    EA			;开总中断允许
004C 22     		RET				;返回
            ;
            ;
            ;
            ;
            ;*************************************
            ;*                                   *
            ;*	       主  程  序                *
            ;*                                   *
            ;*************************************
004D 12002C START:          LCALL   CLEARMEMIO      	;调用初始化子程序
            ;
0050 12005F MAIN:           LCALL   KEYWORK         	;主体程序。调用查键子程序


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例6\6T.ASM     
 
                                                                    页     3
                                                                    01-29-03
                                                                    01:37:35
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0053 020050 		LJMP	MAIN				;转MAIN循环
0056 00     		NOP							;PC值出错处理
0057 00     		NOP
0058 00     		NOP
0059 02004D 		LJMP	START				;重新初始化
            ;
            ;*************************************
            ;*                                   *
            ;*        T1中断服务程序             *
            ;*                                   *
            ;*************************************
005C B2B5   INTT1:          CPL     P3.5       			;40kHZ红外线遥控信号产生
005E 32     		RETI        				;中断返回
            ;
            ;
            ;*************************************
            ;*                                   *
            ;*	键盘工作子程序(4 * 8 阵列)       *
            ;*	出口为各键工作程序入口           *
            ;*************************************
005F 7580FF KEYWORK:        MOV		KEYY,#0FFH			;置列线输入状态
0062 C290   		CLR		KEYX0				;行线(P1口)全置0
0064 C291   		CLR		KEYX1
0066 C292   		CLR		KEYX2
0068 C293   		CLR		KEYX3
006A E580   		MOV		A,KEYY		        ;读入P0口值
006C F5F0   		MOV		B,A                 ;KEYY口值暂存B中
006E B4FF01 		CJNE		A,#0FFH,KEYHIT  ;不等于#0FFH,转KEYHIT(有键按下)
0071 22     KEYOUT:		RET                         ;没有键按下返回
            ;
0072 1201E5 KEYHIT:         LCALL   DL10MS              ;延时去抖动
0075 E580   		MOV		A,KEYY              ;再读入P0口值至A
0077 B5F0F7 		CJNE	A,B,KEYOUT	    	;A不等于B(是干扰),子程序返回
007A D291   		SETB	KEYX1		    	;有键按下,找键号开始,查0行
007C D292   		SETB    KEYX2
007E D293   		SETB	KEYX3
0080 E580   		MOV		A,KEYY              ;读入P0口值
0082 B4FF1E 		CJNE	A,#0FFH,KEYVAL0     ;P0不等于#0FFH,按下键在第0行
0085 D290   		SETB	KEYX0               ;不在第0行,开始查1行
0087 C291   		CLR		KEYX1
0089 E580   		MOV		A,KEYY              ;读入P0口值
008B B4FF1A 		CJNE	A,#0FFH,KEYVAL1     ;P0口不等于#0FFH,按下键在第1行
008E D291   		SETB	KEYX1               ;不在第1行,开始查2行
0090 C292   		CLR		KEYX2
0092 E580   		MOV		A,KEYY              ;读入P0口值
0094 B4FF16 		CJNE	A,#0FFH,KEYVAL2     ;P0口不等于#0FFH,按下键在第2行
0097 D292   		SETB	KEYX2               ;不在第2行,开始查3行
0099 C293   		CLR		KEYX3


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例6\6T.ASM     
 
                                                                    页     4
                                                                    01-29-03
                                                                    01:37:35
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

009B E580   		MOV		A,KEYY              ;读入P0口值
009D B4FF12 		CJNE	A,#0FFH,KEYVAL3     ;P0口不等于#0FFH,按下键在第3行
00A0 020071 		LJMP	KEYOUT              ;不在第3行,子程序返回
            ;
00A3 7A00   KEYVAL0:	MOV		R2,#00H				;按下键在第0行,R2赋行号初值0
00A5 0200B7                 LJMP    KEYVAL4     		;跳到KEYVAL4
            ;
00A8 7A08   KEYVAL1:	MOV		R2,#08H				;按下键在第1行,R2赋行号初值8
00AA 0200B7                 LJMP    KEYVAL4    			;跳到KEYVAL4
            ;
00AD 7A10   KEYVAL2:	MOV		R2,#10H				;按下键在第2行,R2赋行号初值16
00AF 0200B7                 LJMP    KEYVAL4     		;跳到KEYVAL4
            ;
00B2 7A18   KEYVAL3:        MOV		R2,#18H				;按下键在第3行,R2赋行号初值24
00B4 0200B7 		LJMP	KEYVAL4     		;跳到KEYVAL4
            ;
00B7 900136 KEYVAL4:	MOV     DPTR,#KEYVALTAB   ; 键值翻译成连续数字
00BA F5F0                   MOV		B,A               ;P0口值暂存B内
00BC E4                     CLR     A                 ;清A
00BD F8                     MOV     R0,A              ;清R0
00BE E8     KEYVAL5:        MOV     A,R0              ;查列号开始,R0数据放入A
00BF 9408                   SUBB    A,#08H            ;A中数减8
00C1 50AE                   JNC     KEYOUT            ;借位C为0,查表出错,返回
00C3 E8                     MOV		A,R0              ;查表次数小于8,继续查,
00C4 93                     MOVC    A,@A+DPTR         ;查列号表
00C5 08                     INC     R0                ;R0加1
00C6 B5F0F5                 CJNE		A,B,KEYVAL5   ;查得值和P0口值不等,转KEYVAL5再查
00C9 18                     DEC     R0                ;查得值和P0口值相等,R0减1
00CA E8                     MOV     A,R0              ;放入A(R0中数值即为列号值)
00CB 2A     		ADD		A,R2		      ; 与行号初值相加成为键号值(0-31)
00CC F5F0   		MOV		B,A               ;键号乘3处理用于JMP散转指令
00CE 23     		RL		A                 ;键号乘3处理用于JMP散转指令
00CF 25F0   		ADD		A,B               ;键号乘3处理用于JMP散转指令

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -