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

📄 n6221c.asm

📁 30路端口遥控红外遥控 30路端口遥控红外遥控
💻 ASM
字号:
;********************************************************************************
;30路遥控开关,按0-30个键分别点亮p0.0-p3.5的灯,32键全灭.                         *
;可以用此外接驱动后控制30路开关! 遥控器端口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
    MOV P1,#0FFH
    MOV P2,#0FFH
MOV P3,#0FFH
START:


    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
	AJMP BIJIAO
			;判断在118毫秒内是否有连发码
AA:	MOV R1,#25
XX:	ACALL YS2
	JNB P3.7,HH	;跳转到判断连发代码是否正确的程序段
	DJNZ R1,XX
EXIT: 			;对所有端口清零

	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	;按键数值判断执
	CJNE A,#10h,TT1
	 clr p0.0
  TT1: 	CJNE A,#03h,T2
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.1
  T2: 	CJNE A,#01h,T3
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.2
  T3: 	CJNE A,#06h,T4
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.3
  T4: 	CJNE A,#09h,T5
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.4
  T5: 	CJNE A,#1dh,T6
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.5
  T6:	CJNE A,#1fh,T7
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.6
  T7:	 CJNE A,#0dh,T8
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p0.7
  T8:	CJNE A,#19h,t9
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.0
  T9:	CJNE A,#1bh,t10
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.1
  T10: 	CJNE A,#11h,t11
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.2
  T11: 	CJNE A,#15h,t12
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.3
  T12: 	CJNE A,#17h,t13
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.4
  T13: 	CJNE A,#12h,t14
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.5
  T14: 	CJNE A,#16h,t15
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.6
  T15: 	CJNE A,#4ch,t16
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p1.7
  T16: 	CJNE A,#40h,t17
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.0
  T17: 	CJNE A,#48h,t18
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.1
  T18: 	CJNE A,#04h,t19
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.2
  T19: 	CJNE A,#00h,t20
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.3
  T20: 	CJNE A,#02h,t21
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.4
  T21: 	CJNE A,#05h,t22
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.5
  T22: 	CJNE A,#54h,t23
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.6
  T23: 	CJNE A,#4dh,t24
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p2.7
  T24: 	CJNE A,#0ah,t25
   mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.0
  T25: 	CJNE A,#1eh,t26
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.1
  T26: 	CJNE A,#0eh,t27
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.2
  T27: 	CJNE A,#1ah,t28
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.3
  T28: 	CJNE A,#1ch,t29
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.4
  T29: 	CJNE A,#14h,t31
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

  clr p3.5
  T31: 	CJNE A,#0ch,t32
  mov p0,#0ffh
  mov p1,#0ffh
  mov p2,#0ffh
  mov p3,#0ffh

t32:	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 + -