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

📄 6r.lst

📁 用单片机做的多路遥控,接收控制板,很好用的.
💻 LST
字号:
  安徽工程科技学院    计算机科学与工程系    谢永宁

        		 1		;*************************************
        		 2		;*	(INCEPT3.ASM)	*
        		 3		;*	十五路遥控接收板	*
        		 4		;*	2001.7.18	*
        		 5		;*	*
        		 6		;*************************************
        		 7		;
        		 8		;**********************************************************************
        		 9		;*	*
        		 10		;*	A	P1.0	1	40	VCC	*
        		 11		;*	B	P1.1	2	39	P0.0	LED0	*
        		 12		;*	C	P1.2	3	38	P0.1	LED1	*
        		 13		;*	P1.3	4	37	P0.2	LED2	*
        		 14		;*	P1.4	5	36	P0.3	LED3	*
        		 15		;*	P1.5	6	35	P0.4	LED4	*
        		 16		;*	P1.6	7	34	P0.5	LED5	*
        		 17		;*	P1.7	8	33	P0.6	LED6	*
        		 18		;*	100HZ	RST	9	32	P0.7	LED7	*
        		 19		;*	P3.0	10	MCS-51	31	EA	VDD	*
        		 20		;*	P3.1	11	30	ALE	*
        		 21		;*	REMOTEIN	P3.2	12	29	PSEN	*
        		 22		;*	P3.3	13	28	P2.7	调光脉冲	*
        		 23		;*	P3.4	14	27	P2.6	LED8	*
        		 24		;*	P3.5	15	26	P2.5	LED9	*
        		 25		;*	P3.6	16	25	P2.4	LED10	*
        		 26		;*	P3.7	17	24	P2.3	LED11	*
        		 27		;*	XTAL2	18	23	P2.2	LED12	*
        		 28		;*	XTAL1	19	22	P2.1	LED13	*
        		 29		;*	VSS	20	21	P2.0	DEV14(灯泡)	*
        		 30		;*	*
        		 31		;*	*
        		 32		;**********************************************************************
        		 33	;注:	P3.0为100HZ的交流电源过零点相位参考输入
        		 34		;
        		 35		;
        		 36		;*************************************
        		 37		;*	*
        		 38		;*	主程序和中断程序入口	*
        		 39		;*	*
        		 40		;*************************************
        	       	 41		ORG	0000H	;程序开始地址
  0000  02003E	 	 42		LJMP	START	;跳至START执行
        	       	 43		ORG	0003H	;外中断0中断入口
  0003  020059	 	 44		LJMP	INTEX0	;跳至INTEX0执行中断服务程序
        	       	 45		ORG	000BH	;定时器T0中断入口地址
  000B  32	     	 46		RETI	;中断返回(不开中断)
        	       	 47		ORG	0013H	;外中断1中断入口地址
  0013  32	     	 48		RETI	;中断返回(不开中断)
        	       	 49		ORG	001BH	;定时器T1中断入口地址
  001B  32	     	 50		RETI	;中断返回(不开中断)
        	       	 51		ORG	0023H	;串行口中断入口地址
  0023  32	     	 52		RETI	;中断返回(不开中断)
        	       	 53		ORG	002BH	;定时器T2中断入口地址
  002B  32	     	 54		RETI	;中断返回(不开中断)
        		 55		;
        		 56		;***************************
        		 57		;*	*
        		 58		;*	初始化程序	*
        		 59		;*	*
        		 60		;****************************
  002C  E4	     	 61	CLEARMEMIO:	CLR	A	;
  002D  14	     	 62		DEC	A	;A为#0FFH
  002E  F580	   	 63		MOV	P0,A	;P1-P3口置1
  0030  F590	   	 64		MOV	P1,A	;
  0032  F5A0	   	 65		MOV	P2,A	;
  0034  F5B0	   	 66		MOV	P3,A	;
  0036  75A800	 	 67	CLEARMEM:	MOV	IE,#00H	;关所有中断
  0039  D2A8	   	 68		SETB	EX0	;开外中断
  003B  D2AF	   	 69		SETB	EA	;总中断允许
  003D  22	     	 70		RET	;子程序返回
        		 71		;
        		 72		;*************************************
        		 73		;*	*
        		 74		;*	主程序	*
        		 75		;*	*
        		 76		;*************************************
  003E  12002C	 	 77	START:	LCALL	CLEARMEMIO	;上电初始化
  0041  120129	 	 78		LCALL	LOOP	;调用调光控制程序
        		 79		;
  0044  20B0FD	 	 80	MAIN:	JB	P3.0,MAIN	;50HZ交流电未过零转MAIN
  0047  120121	 	 81		LCALL	DLX	;过零点时调用延时子程序(延时可变)
  004A  C2A7	   	 82		CLR	P2.7	;发调光脉冲
  004C  120114	 	 83		LCALL	DELAY	;持续512微秒
  004F  D2A7	   	 84		SETB	P2.7	;关调光脉冲
  0051  020044	 	 85		LJMP	MAIN	;转MAIN循环
  0054  00	     	 86		NOP	;PC值出错处理
  0055  00	     	 87		NOP
  0056  02003E	 	 88		LJMP	START	;出错时重新初始化
        		 89		;******************************
        		 90		;遥控接收程序
        		 91		;******************************
        		 92		;采用中断接收
  0059  C2A8	   	 93	INTEX0:	CLR	EX0	;关外中断
  005B  30B103	 	 94		JNB	P3.1,READ1	;P3.1口为低电平转READ1
  005E  D2A8	   	 95	READOUTT0:	SETB	EX0	;P3.1口为高电平开中断(系干扰)
  0060  32	     	 96		RETI	;退出中断
        		 97		;
  0061  E4	     	 98	READ1:	CLR	A	;清A
  0062  F583	   	 99		MOV	DPH,A	;清DPTR
  0064  F582	   	 100		MOV	DPL,A	;
  0066  20B106	 	 101	HARD1:	JB	P3.1,HARD11	;P3.1变高电平转HARD11
  0069  A3	     	 102		INC	DPTR	;用DPTR对低电平计数
  006B  00	     	 103		NOP	;1微秒延时
  006C  00	     	 104		NOP
  006D  0166	   	 105		AJMP	HARD1	;转HARD1循环(循环周期为8微秒)
  006F  E583	   	 106	HARD11:	MOV	A,DPH	;DPTR高8位放入A
  0071  60EB	   	 107		JZ	READOUTT0	;为0(脉宽小于8*255=2毫秒)退出
  0073  E4	     	 108		CLR	A	;不为0,说明是第一个宽脉冲(3毫秒)
  0074  04	     	 109	READ11:	INC	A	;脉冲个数计1
  0075  30B1FD	 	 110	READ12:	JNB	P3.1,READ12	;低电平时等待
  0078  7906	   	 111		MOV	R1,#06H	;高电平宽度判断定时值
  007A  30B1F7	 	 112	READ13:	JNB	P3.1,READ11	;变低电平时转READ11脉冲计数
  007D  120114	 	 113		LCALL	DELAY	;延时(512微秒)
  0080  D9F8	   	 114		DJNZ	R1,READ13	;6次延时不到转READ13再延时
  0082  14	     	 115		DEC	A	;超过3毫秒判为结束,减1
  0083  14	     	 116		DEC	A	;减1
  0084  6032	   	 117		JZ	FUN0	;为0执行FUN0(2个脉冲)
  0086  14	     	 118		DEC	A	;减1
  0087  6034	   	 119		JZ	FUN1	;为0执行FUN1(3个脉冲)
  0089  14	     	 120		DEC	A	;
  008A  6036	   	 121		JZ	FUN2	;为0执行FUN2(4个脉冲)
  008C  14	     	 122		DEC	A	;
  008D  6038	   	 123		JZ	FUN3	;为0执行FUN3(5个脉冲)
  008F  14	     	 124		DEC	A	;
  0090  603A	   	 125		JZ	FUN4	;为0执行FUN4(6个脉冲)
  0092  14	     	 126		DEC	A	;
  0093  603C	   	 127		JZ	FUN5	;为0执行FUN5(7个脉冲)
  0095  14	     	 128		DEC	A	;
  0096  603E	   	 129		JZ	FUN6	;为0执行FUN6(8个脉冲)
  0098  14	     	 130		DEC	A	;
  0099  6040	   	 131		JZ	FUN7	;为0执行FUN7(9个脉冲)
  009B  14	     	 132		DEC	A	;
  009C  6042	   	 133		JZ	FUN8	;为0执行FUN8(10个脉冲)
  009E  14	     	 134		DEC	A	;
  009F  6044	   	 135		JZ	FUN9	;为0执行FUN9(11个脉冲)
  00A1  14	     	 136		DEC	A	;
  00A2  6046	   	 137		JZ	FUN10	;为0执行FUN10(12个脉冲)
  00A4  14	     	 138		DEC	A	;
  00A5  6048	   	 139		JZ	FUN11	;为0执行FUN11(13个脉冲)
  00A7  14	     	 140		DEC	A	;
  00A8  604A	   	 141		JZ	FUN12	;为0执行FUN12(14个脉冲)
  00AA  14	     	 142		DEC	A	;
  00AB  604C	   	 143		JZ	FUN13	;为0执行FUN13(15个脉冲)
  00AD  14	     	 144		DEC	A	;
  00AE  604E	   	 145		JZ	FUN14	;为0执行FUN14(16个脉冲)
  00B0  14	     	 146		DEC	A	;
  00B1  6050	   	 147		JZ	FUN15	;为0执行FUN15(17个脉冲)
  00B3  00	     	 148		NOP	;
  00B4  00	     	 149		NOP	;
  00B5  02005E	 	 150		LJMP	READOUTT0	;出错退出
        		 151		;
  00B8  B280	   	 152	FUN0:	CPL	P0.0	;P0口各端口开关输出控制
  00BA  02005E	 	 153		LJMP	READOUTT0	;转中断退出
  00BD  B281	   	 154	FUN1:	CPL	P0.1	;
  00BF  02005E	 	 155		LJMP	READOUTT0	;
  00C2  B282	   	 156	FUN2:	CPL	P0.2
  00C4  02005E	 	 157		LJMP	READOUTT0
  00C7  B283	   	 158	FUN3:	CPL	P0.3
  00C9  02005E	 	 159		LJMP	READOUTT0
  00CC  B284	   	 160	FUN4:	CPL	P0.4
  00CE  02005E	 	 161		LJMP	READOUTT0
  00D1  B285	   	 162	FUN5:	CPL	P0.5
  00D3  02005E	 	 163		LJMP	READOUTT0
  00D6  B286	   	 164	FUN6:	CPL	P0.6
  00D8  02005E	 	 165		LJMP	READOUTT0
  00DB  B287	   	 166	FUN7:	CPL	P0.7
  00DD  02005E	 	 167		LJMP	READOUTT0
  00E0  B2A6	   	 168	FUN8:	CPL	P2.6	;P2口各端口开关输出控制
  00E2  02005E	 	 169		LJMP	READOUTT0	;转中断退出
  00E5  B2A5	   	 170	FUN9:	CPL	P2.5
  00E7  02005E	 	 171		LJMP	READOUTT0
  00EA  B2A4	   	 172	FUN10:	CPL	P2.4
  00EC  02005E	 	 173		LJMP	READOUTT0
  00EF  B2A3	   	 174	FUN11:	CPL	P2.3
  00F1  02005E	 	 175		LJMP	READOUTT0
  00F4  B2A2	   	 176	FUN12:	CPL	P2.2
  00F6  02005E	 	 177		LJMP	READOUTT0
  00F9  B2A1	   	 178	FUN13:	CPL	P2.1
  00FB  02005E	 	 179		LJMP	READOUTT0
  00FE  B2A0	   	 180	FUN14:	CPL	P2.0	;P2.0口开关控制
  0100  02005E	 	 181		LJMP	READOUTT0	;转中断退出
  0103  1590	   	 182	FUN15:	DEC	P1	;P1口值减1
  0105  E590	   	 183		MOV	A,P1	;移入A
  0107  B4F704	 	 184		CJNE	A,#0F7H,OUTT0	;不等转OUTT0(显示值小于7)
  010A  E4	     	 185		CLR	A	;相等清A
  010B  14	     	 186		DEC	A	;A为#0FFH
  010C  F590	   	 187		MOV	P1,A	;放回P1(显示值为7)
  010E  120129	 	 188	OUTT0:	LCALL	LOOP	;亮度调整
  0111  02005E	 	 189		LJMP	READOUTT0	;中断退出
        		 190		;
        		 191		;*************************************
        		 192		;*	延时	255	X	2	=	512	US	*
        		 193		;*************************************
        		 194		;
  0114  78FF	   	 195	DELAY:	MOV	R0,#0FFH
  0116  D8FE	   	 196	DELAY1:	DJNZ	R0,DELAY1
  0118  22	     	 197		RET
        		 198		;
        		 199		;*************************************
        		 200		;*	延时10	MS	*
        		 201		;*************************************
        		 202		;
  0119  7914	   	 203	DL10MS:	MOV	R1,#14H
  011B  120114	 	 204	DL10MS1:	LCALL	DELAY
  011E  D9FB	   	 205		DJNZ	R1,DL10MS1
  0120  22	     	 206		RET
        		 207		;
        		 208		;*************************************
        		 209		;*	调光延时时间控制	*
        		 210		;*************************************
        		 211		;
  0121  AAF0	   	 212	DLX:	MOV	R2,B	;置延时初值
  0123  120114	 	 213	DLX1:	LCALL	DELAY	;调512微秒延时子程序
  0126  DAFB	   	 214		DJNZ	R2,DLX1	;循环控制
  0128  22	     	 215		RET	;返回
        		 216		;
        		 217		;*************************************
        		 218		;*	调光控制程序	*
        		 219		;*************************************
        		 220		;根据数码管指示值设置调光脉冲延时值
  0129  E590	   	 221	LOOP:	MOV	A,P1	;读入P1口值
  012B  94FF	   	 222		SUBB	A,#0FFH	;比较
  012D  602B	   	 223		JZ	LOOP7	;值为#0FFH(显示7)时转LOOP7
  012F  E590	   	 224		MOV	A,P1	;
  0131  94FE	   	 225		SUBB	A,#0FEH	;
  0133  6029	   	 226		JZ	LOOP6	;值为#0FEH(显示6)时转LOOP6
  0135  E590	   	 227		MOV	A,P1	;
  0137  94FD	   	 228		SUBB	A,#0FDH	;
  0139  6027	   	 229		JZ	LOOP5	;值为#0FDH(显示5)时转LOOP5
  013B  E590	   	 230		MOV	A,P1	;
  013D  94FC	   	 231		SUBB	A,#0FCH	;
  013F  6025	   	 232		JZ	LOOP4	;值为#0FCH(显示4)时转LOOP4
  0141  E590	   	 233		MOV	A,P1	;
  0143  94FB	   	 234		SUBB	A,#0FBH	;
  0145  6023	   	 235		JZ	LOOP3	;值为#0FBH(显示3)时转LOOP3
  0147  E590	   	 236		MOV	A,P1	;
  0149  94FA	   	 237		SUBB	A,#0FAH	;
  014B  6021	   	 238		JZ	LOOP2	;值为#0FAH(显示2)时转LOOP2
  014D  E590	   	 239		MOV	A,P1	;
  014F  94F9	   	 240		SUBB	A,#0F9H	;
  0151  601F	   	 241		JZ	LOOP1	;值为#0F9H(显示1)时转LOOP1
  0153  E590	   	 242		MOV	A,P1	;
  0155  94F8	   	 243		SUBB	A,#0F8H	;
  0157  601D	   	 244		JZ	LOOP0	;值为#0F8H(显示0)时转LOOP0
  0159  22	     	 245		RET	;返回
        		 246		;
  015A  75F001	 	 247	LOOP7:	MOV	B,#01H	;设置延时值#01H(最亮)
  015D  22	     	 248		RET	;返回
  015E  75F002	 	 249	LOOP6:	MOV	B,#02H	;设置延时值#02H(次亮)
  0161  22	     	 250		RET	;返回
  0162  75F004	 	 251	LOOP5:	MOV	B,#04H	;
  0165  22	     	 252		RET
  0166  75F006	 	 253	LOOP4:	MOV	B,#06H	;
  0169  22	     	 254		RET
  016A  75F008	 	 255	LOOP3:	MOV	B,#08H	;
  016D  22	     	 256		RET
  016E  75F00A	 	 257	LOOP2:	MOV	B,#0AH	;
  0171  22	     	 258		RET
  0172  75F00C	 	 259	LOOP1:	MOV	B,#0CH	;设置延时值#0CH(次暗)
  0175  22	     	 260		RET	;返回
  0176  75F00D	 	 261	LOOP0:	MOV	B,#0DH	;设置延时值#0DH(最暗)
  0179  22	     	 262		RET	;返回
        		 263		;
  017A  	       	 264		END	;程序结束
        		       	 265		END


  程序中使用的标号如下:

  CLEARMEMIO	002C
  CLEARMEM	0036
  START	003E
  MAIN	0044
  INTEX0	0059
  READOUTT0	005E
  READ1	0061
  HARD1	0066
  HARD11	006F
  READ11	0074
  READ12	0075
  READ13	007A
  FUN0	00B8
  FUN1	00BD
  FUN2	00C2
  FUN3	00C7
  FUN4	00CC
  FUN5	00D1
  FUN6	00D6
  FUN7	00DB
  FUN8	00E0
  FUN9	00E5
  FUN10	00EA
  FUN11	00EF
  FUN12	00F4
  FUN13	00F9
  FUN14	00FE
  FUN15	0103
  OUTT0	010E
  DELAY	0114
  DELAY1	0116
  DL10MS	0119
  DL10MS1	011B
  DLX	0121
  DLX1	0123
  LOOP	0129
  LOOP7	015A
  LOOP6	015E
  LOOP5	0162
  LOOP4	0166
  LOOP3	016A
  LOOP2	016E
  LOOP1	0172
  LOOP0	0176

⌨️ 快捷键说明

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