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

📄 n6221.asm

📁 说明:本文件夹一共提供各类编程实例200多个
💻 ASM
字号:
;********************************************************************************
;遥控器控制显示0123456789abcdef数据不保持                                       *
;.数码管数据p0,数码管控制p2口,遥控接收端口p3.7                                  *
;********************************************************************************
;*  日期:  2007-3-25                                                            *
;*  版本:  3.0                                                                  *
;*  作者:  深圳学林电子有限公司     专业8051单片机教学站                        *
;*  邮箱: sxj1974@163.com                                                       *
;*  网站: http://www.51c51.com     http://www.8951.com    更多例程请登陆网站   *
;********************************************************************************
;*  硬件:此程序在本公司xlisp系列单片机实验仪运行通过                           *
;********************************************************************************
;* 【版权】 Copyright(C)深圳学林电子有限公司 www.51c51.com  All Rights Reserved *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;********************************************************************************
	org 00h
	ORG 30H
START:
	MOV P0,#0ffH
	MOV P1,#0FFH
	MOV P2,#0FFH
	MOV P3,#0FFH
	JB P3.7,$	;等待遥控信号出现
SB:
    	MOV R4,#8   	;8毫秒为高电平错误
SBA:
    	MOV R5,#250
SBB:
    	JB P3.7,SXB1
    	DJNZ R5,SBB
    	DJNZ R4,SBA
    	MOV R4,#2
    	JMP SBC
SXB1:
    	MOV R5,#5
SXB2:             	;去掉20US的尖峰干扰信号
    	JNB P3.7,SBB
    	DJNZ R5,SXB2
    	JMP START
SBC:
    	MOV R5,#250
SB1:
	JB P3.7,SB2 	;2MS内不为高电平错误(监测9MS的低电平引导码)
    	DJNZ R5,SB1
    	DJNZ R4,SBC
    	JMP START
SB2:                	;去掉20US的尖峰干扰信号
    	MOV R5,#5
SB2_A:
    	JNB P3.7,SB1
    	DJNZ R5,SB2_A
    	MOV R4,#3
SB2_1:
    	MOV R5,#250
SB3:                 	;监测4.5MS高电平,如3MS内出现低电平错误
    	JNB P3.7,SXC
    	DJNZ R5,SB3
    	DJNZ R4,SB2_1
    	MOV R4,#2
    	JMP SB3_1
SXC:                 	;去掉20US的尖峰干扰信号
    	MOV R5,#5
SXC1:
    	JB P3.7,SB3
    	DJNZ R5,SXC1
    	JMP START
SB3_1:                	;监测4.5MS高电平,如5MS内不为低电平错误
    	MOV R5,#250
SB3_2:
    	JNB P3.7,SB4
    	DJNZ R5,SB3_2
    	DJNZ R4,SB3_1
    	JMP START
SB4:                   ;去掉20US的尖峰干扰信号
    	MOV R5,#5
SB4_1:
    	JB P3.7,SB3_2
    	DJNZ R5,SB4_1
	MOV R1,#1AH 	;设定1AH为起始RAM区
	MOV R2,#4
PP: 	MOV R3,#8
JJJJ:
    	MOV R5,#250
JJJJ2:               	;1MS内不为低电平错误
    	JB P3.7,JJJJ3
    	DJNZ R5,JJJJ2
    	JMP START
JJJJ3:
	LCALL YS1 	;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
	MOV C,P3.7  	;将P3.7引脚此时的电平状态0或1存入C中
	JNC UUU     	;如果为0就跳转到UUU
    	MOV R5,#250
JJJJ4:
    	JNB P3.7,UUU
    	NOP
    	DJNZ R5,JJJJ4
    	JMP START
UUU:	MOV A,@R1 	;将R1中地址的给A
	RRC A           ;将C中的值0或1移入A中的最低位
	MOV @R1,A       ;将A中的数暂时存放在R1中
	DJNZ R3,JJJJ    ;接收地址码的高8位
	INC R1      	;对R1中的值加1,换成下一个RAM
	DJNZ R2,PP  	;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
			;以下对代码是否正确和定义进行识别
	MOV A,1AH	;比较高8位地址码
	XRL A,#00000000B;判断1AH的值是否等于00000000,相等的话A为0
	JNZ EXIT	;如果不相等说明解码失败退出解码程序
	MOV A,1BH	;比较低8位地址
	XRL A,#11111111B;再判断高8位地址是否正确
	JNZ EXIT	;如果不相等说明解码失败退出解码程序
	LCALL YS3
	MOV A,1CH	;比较数据码和数据反码是否正确?
	CPL A
	XRL A,1DH 	;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确
	JNZ EXIT	;如果不相等说明解码失败退出解码程序
	LCALL YS3
	CLR P2.6 	;选中数码管
	CLR P3.3	;解码成功喇叭响?
	AJMP BIJIAO
			;判断在118毫秒内是否有连发码
AA:	MOV R1,#25
XX:	ACALL YS2
	JNB P3.7,HH	;跳转到判断连发代码是否正确的程序段
	DJNZ R1,XX
EXIT: MOV P0,#0H	;对所有端口清零
	MOV P1,#0FFH
	MOV P2,#0FFH
	MOV P3,#0FFH
	AJMP START
			;连发码判断程序段-----------
HH:	MOV R6,#4
S: 	ACALL YS1	;调用882微秒延时子程序
	JB P3.7,EXIT	;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序
	DJNZ R6, S	;重复4次,目的是确认连发码的低电平信号波形
	JNB P3.7, $ 	;等待高电?
	LCALL YS3
	AJMP AA

BIJIAO:	MOV A,1CH	;按键数值判断执
	mov p1,a
	CJNE A,#10h,TT1
	MOV P0,#7EH     ;数码管显示1
TT1: 	CJNE A,#03h,T2
	MOV P0,#0A2H    ;数码管显示2
T2: 	CJNE A,#01h,T3
	MOV P0,#62H     ;数码管显示3
T3: 	CJNE A,#06h,T4
MOV 	P0,#74H         ;数码管显示4
T4: 	CJNE A,#09h,T5
	MOV P0,#61H     ;数码管显示5
T5: 	CJNE A,#1dh,T6
	MOV P0,#21H     ;数码管显示6
T6:	CJNE A,#1fh,T7
	MOV P0,#7AH     ;数码管显示7
T7:	 CJNE A,#0dh,T8
	MOV P0,#20H     ;数码管显示8
T8:	CJNE A,#19h,t9
	MOV P0,#60H     ;数码管显示9
 T9:	CJNE A,#1bh,t10
	MOV P0,#28H     ;数码管显示0
 T10: 	CJNE A,#11h,t11
	MOV P0,#30H     ;数码管显示A
T11: 	CJNE A,#15h,t12
	MOV P0,#25H     ;数码管显示b
T12: 	CJNE A,#17h,t13
	MOV P0,#0a9H    ;数码管显示C
T13: 	CJNE A,#12h,t14
	MOV P0,#26H     ;数码管显示d
T14: 	CJNE A,#16h,t15
	MOV P0,#0a1H    ;数码管显示E
 T15: 	CJNE A,#4ch,t16
	MOV P0,#0b1H    ;数码管显示f
 
t16:	AJMP AA
YS1:	 MOV R4,#20	;延时子程序1,精确延时882微秒
	D1: MOV R5,#20
	DJNZ R5,$
	DJNZ R4,D1
	RET
YS2: 	MOV R4,#10 	;延时子程序2,精确延时4740微秒
	D2: MOV R5,#235
	DJNZ R5,$
	DJNZ R4,D2
	RET
YS3:	MOV R4,#2	;延时程序3,精确延时1000微秒
	D3:MOV R5,#248
	DJNZ R5,$
	DJNZ R4,D3
	RET
	END

⌨️ 快捷键说明

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