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

📄 ir.asm

📁 C8051F.rar
💻 ASM
字号:
;参考程序A:IR.ASM: 
;此程序接收红外发射过来的数据,解码后由CPU读取并显示在LED数码管上.	
;红外遥控器  IR.ASM   2005.9.21
$include (c8051f020.inc)         // SFR declarations
 PPA 	          EQU 	8000H    ;8255的端口地址,8255驱动数码管显示温度值
 PPB 	          EQU 	8001H    ;8255驱动数码管显示LM74测量出的温度值
 PPC 	          EQU 	8002H    ;LM74是高精度数字式温度传感器
 CWR              EQU 	8003H   
 DataPort	      EQU	8400H		;红外数据接收口
 BUZ			  EQU	P3.5        ;P3.5驱动蜂鸣器
  ORG		0
	AJMP	main
	ORG		93H         ; INT6中断入口
	AJMP	INT6_ISR
	ORG		100H
INITEXINT67:               ;初始化外部中断INT6
	ORL		EIE2,#10H		;允许外部中断6
	RET
;外部中断6的中断服务程序
INT6_ISR:
	ANL		P3IF,#NOT(40H)		;清外部中断6标志
	MOV		R1,#01H				;置允许读标志
	RETI
MAIN:MOV		WDTCN,#0deH       ;无效看门狗
	MOV		WDTCN,#0adH
	LCALL	PORT_Init					;输入/输出口初始化
	LCALL	INITEXINT67					;初始化外部中断INT6
	SETB	EA							;开总中断
	MOV		R1,#00H
LOOP:
	CJNE	R1,#01H,LOOP				;是否允许读红外数据
	MOV		DPTR,#DataPort
	MOVX	A,@DPTR						;读红外数据
    CPL     A
	ANL		A,#0FH
	MOV		79H,A						;保存收到的红外数据						CLR		BUZ							;蜂鸣器响
	LCALL	Del0
	LCALL	Del0
	SETB	BUZ						;蜂鸣器灭
	MOV   R1,#0
    LCALL DISPLED
    AJMP   LOOP
;配置交叉开关和输入/输出口
PORT_Init:
	MOV		XBR2,#40H	    	;使能交叉开关和弱上拉
	ORL		P74OUT,#0ffH		;使能P4,P5,P6,
	ORL		EMI0CF,#2cH	;EMIF工作在地址/数据复用方式,只用外部存储器,
;ALE高/低脉宽占1个SYSCLK周期
	ORL		EMI0TC,#6cH	;地址建立/保持时间占0个SYSCLK周期,
;/WR和/RD占12个SYSCLK周期
	RET
;显示功能子程序:被显示的数据在79H中.
DISPLED:  ACALL   C8255    ;8255初始化
          MOV	R2,#01H
          MOV	R5,#1
	      MOV	R0,#79H       ;显示一位,其值在79H中
DSP1:	  MOV	DPTR,#PPB
          MOV	A,R2
          MOVX	@DPTR,A
	      MOV	A,@R0
          ANL  A,#0FH
DSP2:	  MOV	DPTR,#BCD
     	  MOVC	A,@A+DPTR
          MOV   B,A
          MOV	DPTR,#PPC
          MOV   A,R5
          CJNE A,#3,SS0
          MOV  A,B
          ADD   A,#80H
          AJMP   SS1
 SS0:     MOV   A,B
 SS1:     MOVX	@DPTR,A
	      ACALL   DEL0
	      MOV	A,R2
    	  RL	A
	      MOV	R2,A
	      INC	R0
	      DJNZ	R5,DSP1
	      RET
BCD:      DB  3FH,06H,5BH,4FH ;显示数值,0,1,2,3
          DB  66H,6DH,7DH,07H           ;4,5,6,7
	      DB 	7FH,6FH,77H,7CH           ;8,9,A,B
	      DB 	39H,5EH,79H,71H           ;C,D,E,F
          DB 	73H,3EH,31H,6EH           ;P,U,Z,Y
	      DB      0FFH,00H              ;8,灭     
C8255:	  MOV	A,#80H      ; 设置PC口,PB口为输出,PA口为输入
	      MOV 	DPTR,#CWR  ;#8003H为8255的控制寄存器地址
	      MOVX	@DPTR,A
	      RET
DEL0:     MOV R6,#3FH      ;延时子程序
TM:       MOV R7,#0FFH
          DJNZ R7,$
          DJNZ R6,TM
          RET
          END

⌨️ 快捷键说明

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