标准红外遥控的接收程序-松瀚汇编源程序

标准红外遥控的接收程序-松瀚汇编源程序

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

/****************************************************
名称: 标准红发遥控 接收程序--4BYTE
平台为: 松瀚SN8P2511
接收方式为 定时中断接收 中断定时时间为100U
*****************************************************/
;寄存器定义
STS1 DS 1
F_IRECOK EQU STS1. 0 ;接收到一帖数据

T_IRSTA  DS 1
T_IRNUMPOSI DS 1 ;高电平计数器
R_IRDAT1 DS 1 ;接收缓冲区
R_IRDAT2 DS 1
R_IRDAT3 DS 1
R_IRDAT4 DS 1
R_IRDATBUF DS 1 ;成功接收到的数据
;常数定义
VT_LEVEL0 EQU 10 ;1MS
VT_LEVEL1 EQU 20 ;2MS

;下面为中断接收程序--100U进入中断一次
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;先接收R_IRDAT4 最后接收R_IRDAT1
;R_IRDAT4 R_IRDAT3 R_IRDAT2 R_IRDAT1 分别为地址码 地址反码 数据码 数据反码
 BTS0 F_IRECOK ;数据未取出 临时不接收新数据
 JMP L_IREXIT
 CLR T_IRSTA
 BTS1 P_IR 
 INCMS T_IRSTA
 BTS1 P_IR 
 INCMS T_IRSTA
 BTS1 P_IR 
 INCMS T_IRSTA
 BTS1 T_IRSTA. 1
 JMP L_IRPOSI
L_NEGA1: ;当前为0
 MOV A, T_IRNUMPOSI
 B0BTS0 FZ
 JMP L_IREXIT
 MOV A, T_IRNUMPOSI 
 SUB A, #VT_LEVEL1 ;高电平时间大于 数据1 觉得起始 
 B0BTS0 FC
 JMP L_INITIRDAT
 
 BTS0 R_IRDAT4. 0
 BSET F_IRECOK ;接收完一帖数据
  
 MOV A, T_IRNUMPOSI 
 SUB A, #VT_LEVEL0 ;高电平时间大于 数据0 觉得接收到数据1 
 RRCM R_IRDAT1
 RRCM R_IRDAT2
 RRCM R_IRDAT3
 RRCM R_IRDAT4
 
 CLR T_IRNUMPOSI
 JMP L_IREXIT
L_INITIRDAT: ;接收到起始码以后 初始化各数据 
 CLR T_IRNUMPOSI
 MOV A, #0X80
 MOV R_IRDAT1, A
 CLR R_IRDAT2
 CLR R_IRDAT3
 CLR R_IRDAT4
; BCLR F_IRECOK
 JMP L_IREXIT 
;-------------------------------
L_IRPOSI: ;当前为1
 INCMS T_IRNUMPOSI
 NOP 
L_IREXIT: ;退出接收程序
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118522.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号