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

📄 6t.lt

📁 用单片机做的多路遥控,接收控制板,很好用的.
💻 LT
📖 第 1 页 / 共 2 页
字号:
        		 1		;*************************************
        		 2		;*	(SEND.ASM)	*
        		 3		;*	十五路遥控发送控制器	*
        		 4		;*	2001.7.18	*
        		 5		;*************************************
        		 6		;
        		 7		;**********************************************************************
        		 8		;*	*
        		 9		;*	KEYX0	P1.0	1	40	VCC	*
        		 10		;*	KEYX1	P1.1	2	39	P0.0	KEYY0	*
        		 11		;*	KEYX2	P1.2	3	38	P0.1	KEYY1	*
        		 12		;*	KEYX3	P1.3	4	37	P0.2	KEYY2	*
        		 13		;*	P1.4	5	36	P0.3	KEYY3	*
        		 14		;*	P1.5	6	35	P0.4	KEYY4	*
        		 15		;*	P1.6	7	34	P0.5	KEYY5	*
        		 16		;*	P1.7	8	33	P0.6	KEYY6	*
        		 17		;*	RST	9	32	P0.7	KEYY7	*
        		 18		;*	P3.0	10	MCS-51	31	EA	VDD	*
        		 19		;*	P3.1	11	30	ALE	*
        		 20		;*	P3.2	12	29	PSEN	*
        		 21		;*	P3.3	13	28	P2.7	*
        		 22		;*	P3.4	14	27	P2.6	*
        		 23		;*	REMOTEOUT	T1	P3.5	15	26	P2.5	*
        		 24		;*	P3.6	16	25	P2.4	*
        		 25		;*	P3.7	17	24	P2.3	*
        		 26		;*	XTAL2	18	23	P2.2	*
        		 27		;*	XTAL1	19	22	P2.1	*
        		 28		;*	VSS	20	21	P2.0	*
        		 29		;*	*
        		 30		;*	*
        		 31		;**********************************************************************
        		 32		;
        		 33		;
        		 34		;
        		 35		;伪定义
        	       	 36		KEYX0	EQU	P1.0	;P1.0	--	P1.3位键盘行扫描
        	       	 37		KEYX1	EQU	P1.1	;本系统采用4	*	8	键盘阵列
        	       	 38		KEYX2	EQU	P1.2
        	       	 39		KEYX3	EQU	P1.3
        	       	 40		KEYY	EQU	P0	;P0	口键盘列扫描
        		 41		;
        		 42		;
        		 43		;
        		 44		;
        		 45		;*************************************
        		 46		;*	*
        		 47		;*	主程序和中断程序入口	*
        		 48		;*	*
        		 49		;*************************************
        	       	 50		ORG	0000H	;程序执行开始地址
  0000  014D	   	 51		AJMP	START	;跳至START执行
        	       	 52		ORG	0003H	;外中断0中断入口地址
  0003  32	     	 53		RETI	;中断返回(不开中断)
        	       	 54		ORG	000BH	;定时器T0中断入口地址
  000B  32	     	 55		RETI	;中断返回(不开中断)
        	       	 56		ORG	0013H	;外中断1中断入口地址
  0013  32	     	 57		RETI	;中断返回(不开中断)
        	       	 58		ORG	001BH	;定时器T1中断入口地址
  001B  02005C	 	 59		LJMP	INTT1	;跳至INTT1中断服务程序
        	       	 60		ORG	0023H	;串行口中断入口地址
  0023  32	     	 61		RETI	;中断返回(不开中断)
        	       	 62		ORG	002BH	;定时器T2中断入口地址
  002B  32	     	 63		RETI	;中断返回(不开中断)
        		 64		;
        		 65		;*************************************
        		 66		;*	*
        		 67		;*	初	始	化	程	序	*
        		 68		;*	*
        		 69		;*************************************
  002C  E4	     	 70	CLEARMEMIO:	CLR	A	;A清0
  002D  14	     	 71		DEC	A	;A为#0FFH
  002E  F580	   	 72		MOV	P0,A	;P0-P3口置1
  0030  F590	   	 73		MOV	P1,A	;
  0032  F5A0	   	 74		MOV	P2,A	;
  0034  F5B0	   	 75		MOV	P3,A	;
  0036  C2B5	   	 76		CLR	P3.5	;关遥控输出
  0038  758170	 	 77	CLEARMEM:	MOV	SP,#70H	;设堆栈基址为70H
  003B  75A800	 	 78		MOV	IE,#00H	;关所有中断
  003E  75B801	 	 79		MOV	IP,#01H	;设优先级
  0041  758922	 	 80		MOV	TMOD,#22H	;8位自动重装初值模式
  0044  758DF3	 	 81		MOV	TH1,#0F3H	;定时为13微秒初值
  0047  758BF3	 	 82		MOV	TL1,#0F3H	;
  004A  D2AF	   	 83		SETB	EA	;开总中断允许
  004C  22	     	 84		RET	;返回
        		 85		;
        		 86		;
        		 87		;
        		 88		;
        		 89		;*************************************
        		 90		;*	*
        		 91		;*	主	程	序	*
        		 92		;*	*
        		 93		;*************************************
  004D  12002C	 	 94	START:	LCALL	CLEARMEMIO	;调用初始化子程序
        		 95		;
  0050  12005F	 	 96	MAIN:	LCALL	KEYWORK	;主体程序。调用查键子程序
  0053  020050	 	 97		LJMP	MAIN	;转MAIN循环
  0056  00	     	 98		NOP	;PC值出错处理
  0057  00	     	 99		NOP
  0058  00	     	 100		NOP
  0059  02004D	 	 101		LJMP	START	;重新初始化
        		 102		;
        		 103		;*************************************
        		 104		;*	*
        		 105		;*	T1中断服务程序	*
        		 106		;*	*
        		 107		;*************************************
  005C  B2B5	   	 108	INTT1:	CPL	P3.5	;40KHZ红外线遥控信号产生
  005E  32	     	 109		RETI	;中断返回
        		 110		;
        		 111		;
        		 112		;*************************************
        		 113		;*	*
        		 114		;*	键盘工作子程序(4	*	8	阵列)	*
        		 115		;*	出口为各键工作程序入口	*
        		 116		;*************************************
  005F  7580FF	 	 117	KEYWORK:	MOV	KEYY,#0FFH	;置列线输入状态
  0062  C290	   	 118		CLR	KEYX0	;行线(P1口)全置0
  0064  C291	   	 119		CLR	KEYX1
  0066  C292	   	 120		CLR	KEYX2
  0068  C293	   	 121		CLR	KEYX3
  006A  E580	   	 122		MOV	A,KEYY	;读入P0口值
  006C  F5F0	   	 123		MOV	B,A	;KEYY口值暂存B中
  006E  B4FF01	 	 124		CJNE	A,#0FFH,KEYHIT	;不等于#0FFH,转KEYHIT(有键按下)
  0071  22	     	 125	KEYOUT:	RET	;没有键按下返回
        		 126		;
  0072  1201E5	 	 127	KEYHIT:	LCALL	DL10MS	;延时去抖动
  0075  E580	   	 128		MOV	A,KEYY	;再读入P0口值至A
  0077  B5F0F7	 	 129		CJNE	A,B,KEYOUT	;A不等于B(是干扰),子程序返回
  007A  D291	   	 130		SETB	KEYX1	;有键按下,找键号开始,查0行
  007C  D292	   	 131		SETB	KEYX2
  007E  D293	   	 132		SETB	KEYX3
  0080  E580	   	 133		MOV	A,KEYY	;读入P0口值
  0082  B4FF1E	 	 134		CJNE	A,#0FFH,KEYVAL0	;P0不等于#0FFH,按下键在第0行
  0085  D290	   	 135		SETB	KEYX0	;不在第0行,开始查1行
  0087  C291	   	 136		CLR	KEYX1
  0089  E580	   	 137		MOV	A,KEYY	;读入P0口值
  008B  B4FF1A	 	 138		CJNE	A,#0FFH,KEYVAL1	;P0口不等于#0FFH,按下键在第1行
  008E  D291	   	 139		SETB	KEYX1	;不在第1行,开始查2行
  0090  C292	   	 140		CLR	KEYX2
  0092  E580	   	 141		MOV	A,KEYY	;读入P0口值
  0094  B4FF16	 	 142		CJNE	A,#0FFH,KEYVAL2	;P0口不等于#0FFH,按下键在第2行
  0097  D292	   	 143		SETB	KEYX2	;不在第2行,开始查3行
  0099  C293	   	 144		CLR	KEYX3
  009B  E580	   	 145		MOV	A,KEYY	;读入P0口值
  009D  B4FF12	 	 146		CJNE	A,#0FFH,KEYVAL3	;P0口不等于#0FFH,按下键在第3行
  00A0  020071	 	 147		LJMP	KEYOUT	;不在第3行,子程序返回
        		 148		;
  00A3  7A00	   	 149	KEYVAL0:	MOV	R2,#00H	;按下键在第0行,R2赋行号初值0
  00A5  0200B7	 	 150		LJMP	KEYVAL4	;跳到KEYVAL4
        		 151		;
  00A8  7A08	   	 152	KEYVAL1:	MOV	R2,#08H	;按下键在第1行,R2赋行号初值8
  00AA  0200B7	 	 153		LJMP	KEYVAL4	;跳到KEYVAL4
        		 154		;
  00AD  7A10	   	 155	KEYVAL2:	MOV	R2,#10H	;按下键在第2行,R2赋行号初值16
  00AF  0200B7	 	 156		LJMP	KEYVAL4	;跳到KEYVAL4
        		 157		;
  00B2  7A18	   	 158	KEYVAL3:	MOV	R2,#18H	;按下键在第3行,R2赋行号初值24
  00B4  0200B7	 	 159		LJMP	KEYVAL4	;跳到KEYVAL4
        		 160		;
  00B7  900136	 	 161	KEYVAL4:	MOV	DPTR,#KEYVALTAB	;键值翻译成连续数字
  00BA  F5F0	   	 162		MOV	B,A	;P0口值暂存B内
  00BC  E4	     	 163		CLR	A	;清A
  00BD  F8	     	 164		MOV	R0,A	;清R0
  00BE  E8	     	 165	KEYVAL5:	MOV	A,R0	;查列号开始,R0数据放入A
  00BF  9408	   	 166		SUBB	A,#08H	;A中数减8
  00C1  50AE	   	 167		JNC	KEYOUT	;借位C为0,查表出错,返回
  00C3  E8	     	 168		MOV	A,R0	;查表次数小于8,继续查,
  00C4  93	     	 169		MOVC	A,@A+DPTR	;查列号表
  00C5  08	     	 170		INC	R0	;R0加1
  00C6  B5F0F5	 	 171		CJNE	A,B,KEYVAL5	;查得值和P0口值不等,转KEYVAL5再查
  00C9  18	     	 172		DEC	R0	;查得值和P0口值相等,R0减1
  00CA  E8	     	 173		MOV	A,R0	;放入A(R0中数值即为列号值)
  00CB  2A	     	 174		ADD	A,R2	;与行号初值相加成为键号值(0-31)
  00CC  F5F0	   	 175		MOV	B,A	;键号乘3处理用于JMP散转指令
  00CE  23	     	 176		RL	A	;键号乘3处理用于JMP散转指令
  00CF  25F0	   	 177		ADD	A,B	;键号乘3处理用于JMP散转指令
  00D1  9000D5	 	 178		MOV	DPTR,#KEYFUNTAB	;取散转功能程序(表)首址
  00D4  73	     	 179		JMP	@A+DPTR	;散转至对应功能程序标号
  00D5  02013F	 	 180	KEYFUNTAB:	LJMP	KEYFUN00	;跳到键号0对应功能程序标号
  00D8  020145	 	 181		LJMP	KEYFUN01	;跳到键号1对应功能程序标号
  00DB  02014B	 	 182		LJMP	KEYFUN02	;跳到键号2对应功能程序标号
  00DE  020151	 	 183		LJMP	KEYFUN03	;跳到键号3对应功能程序标号
  00E1  020157	 	 184		LJMP	KEYFUN04	;跳到键号4对应功能程序标号
  00E4  02015D	 	 185		LJMP	KEYFUN05	;跳到键号5对应功能程序标号
  00E7  020163	 	 186		LJMP	KEYFUN06	;跳到键号6对应功能程序标号

⌨️ 快捷键说明

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