大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
/**************************************************** 名称: 标准红发遥控 接收程序--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账号...