版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、;/*;* 标题: 红外遥控解码综合控制 *;* 文件: Project.asm * *;* 版本: 1.5 (用学林电子xl-2000实验板试验通过) *;邮箱: njmadz *;* 作者: 牛俊明 ;* 日期: 2012-12-23 *;*;* 描述: *;* 一、遥控键值:(Ht6221标准红外解码遥控器);*;键号 作用;* 1 led灯延时时间加1,可连续动作;* 2 led灯延时时间减1,可连续动作;* 3 led灯延时时间加2,可连续动作;* 4 led灯延时时间减2,可连续动作;* 5 led灯延时时间清零;* 6 led灯循环右移;* 7 led灯循环左移;* 8 关闭le
2、d灯;* 9 开继电器,外接一个灯泡;* 10 关继电器,外接一个灯泡;* 11 继电器周期工作,外接一个灯泡;* *;* *;* *;* 32 按键在起作用的同时,也在数码管上显示键值;*二、数码管:(共有3种模式);* P0口接数据,P2口接位选;* 模式1:正常模式,从左至右, 1、2位显示led灯延时时间;* 4、5位显示键号,7、8位显示键编码;*;* 模式2:没有本遥控本上的键号时显示如下;*1、2位显示led灯延时时间;*4、5位显示“-”,7、8位显示键编码 ;* 模式3:不是本遥控板,或者读取数据出错;*1、2位显示led灯延时时间;*4、5、6、7、8显示ERROR;* 三
3、、LED发光二极管;* 单片机P1口输出控制LED左移或右移;* 四、其他配置;* P3.0 接继电器;* P3.1 接蜂鸣器;* P3.2 接红外接收头;* * *;*/ORG00HAJMPMAINORG0003HAJMPYAO_KONGORG000BHAJMPT0_INTORG001BHLJMPT1_INTORG0050HMAIN:LCALLINIT;调用初始化JMP$/* 数据处理程序* 工作寄存器使用情况:静态:R4/局部:R5,R6,R7延时用/R2/R3=32个按键/R1,#8;一次取8个数据全局:R0,#31H;送数据首地址*/YAO_KONG:CLR EA;CLR ET0PUS
4、H ACC PUSH PSWSETB PSW.3 ;选择工作寄存器组1 CLR PSW.4;*MOVR4,#4BYTE0:JNBD_REM,BYTE1DJNZR4,BYTE0CPL P3.5;信号干扰AJMPREM_BAK;D_REM信号没出现,退出;*BYTE1:MOVR4,#20BYTE2:ACALLDELAY_140USDJNZR4,BYTE2 ;延时 20*140 =2800us =2.8ms,以周期2.8ms来检测JBD_REM,BYTE0;确认D_REM数据信号,否则为连击或信号干扰;*BYTE3:JBD_REM,BYTE41ACALLDELAY_140USJMPBYTE3;等待D
5、_REM变为高电平;*BYTE41: MOVR0,#31H;送数据首地址NEXDATA:;读取下一个数据开始位置 MOVR1,#8;一次取8个数据;*BYTE42:JNBD_REM,BYTE43;判断数据为低电平ACALLDELAY_140USJMPBYTE42;*BYTE43:JBD_REM,BYTE04;判断数据为高电平ACALLDELAY_140USJMPBYTE43;*BYTE04: MOVR2,#0BYTE4:ACALLDELAY_140USJNBD_REM,BYTE5;判断数据位的时间长度INCR2CJNER2,#30,BYTE4 ;0.14ms*30 = 4.2ms大于4.2则为
6、连击MOVR3,#250TE0:;ACALLDELAY_140US;ACALLDELAY_140US;ACALLDELAY_140USACALLDELAY_140USACALLDELAY_140USACALLDELAY_140USDJNZR3,TE0AJMPN;去执行连击操作;*BYTE5:MOVA,#8; 0.14*8 = 1.12MS,这个数大于0.84ms,小于1.68ms,即能;读出当前是0或1;A送入8之后与R2里面的数进行对比,如果R0里面数大于0;则下面相减后,A会借位,CY = 1;CLRCSUBBA,R2MOVA,R0RRCAMOVR0,ADJNZR1,BYTE42;一次取8
7、个数据INCR0;取下一个数据地址CJNER0,#35H,NEXDATA;34H+1=35H为数据地址,判断4个数据是否取完;*地址识别*;MOVA,ADDR_LXRLA,#00H;低8位地址全为0#0DH;JNZREM_BAK00MOVA,ADDR_HXRLA,#0FFH;高8位地址为1#0DH;JNZREM_BAK00;*8位数据判断*MOVA,CODE_1CPLACJNEA,CODE_0,REM_BAK00;原码和反码比较CLRERROR;数据正确AJMPN/* 中间转换,使跳出REM_BAK0*/REM_BAK00:AJMPREM_BAK0;*数据加1*N:MOVA,CODE_1CJN
8、EA,#10H,NE0INCDIS_BACALLPD99AJMPNE3;*数据减1*NE0:MOVA,CODE_1CJNEA,#03H,NE1DECDIS_BMOVR2,#0;当数据减时,为保证数据同步,则给R2清零ACALLPD0AJMPNE3;*数据加2*NE1:MOVA,CODE_1CJNEA,#01H,NE2MOVA,DIS_BADDA,#2MOVDIS_B,AACALLPD99AJMPNE3;*数据减2*NE2:MOVA,CODE_1CJNEA,#06H,NE4MOVA,DIS_BSUBBA,#2MOVDIS_B,AMOVR2,#0;当数据减时,为保证数据同步,则给R2清零ACALL
9、PD0AJMPNE3;*判断按键是否为9(数据清0)*NE4:MOVA,CODE_1CJNEA,#09H,NE5MOVDIS_B,#0AJMPNE3;*LED工作模式*NE5:MOVA,CODE_1CJNEA,#0DH,NE6MOVLED_M,#0AJMPNE3NE6:CJNEA,#1DH,NE7MOVLED_M,#1AJMPNE3NE7:CJNEA,#1FH,NE8MOVLED_M,#2AJMPNE3;*继电器开*NE8:MOVA,CODE_1CJNEA,#19H,NE9CLRJDQCLRWJAJMPNE3;*继电器关*NE9:CJNEA,#1BH,NE10SETBJDQCLRWJAJMPN
10、E3;*继电器周期开/关*NE10:CJNEA,#11H,NE3SETBWJ;AJMPNE3/*还需要更多功能在此处添加程序*/NE3:;*取出当前编码键值*MOVR3,#32MOVDPTR,#TAB2LOOK:MOVA,R3MOVCA,A+DPTRXRLA,CODE_1;与读出的代码比较JZLOOK0DJNZR3,LOOKSETBD_ER;没有数据表里面的编码,则不是本遥控板AJMPREM_BAKLOOK0:CLRD_ER;是本遥控板里面编码则去显示编码MOVCODE_D,R3;把数据送去显示AJMPREM_BAKREM_BAK0:SETBERROR;数据错误 REM_BAK: ACALLB
11、EEP_BL;SETBET0SETBEAPOPPSWPOPACCRETI/*;判断数据是否为0,或99,然后清0或送数99*/PD0:MOVA,DIS_BCJNEA,#255,PD0HUIMOVDIS_B,#99AJMPPD0HPD0HUI: CJNEA,#254,PD0HMOVDIS_B,#99PD0H:RETPD99:MOVA,DIS_BCJNEA,#100,PD99HUIMOVDIS_B,#0AJMPPHUIPD99HUI:CJNEA,#101,PHUIMOVDIS_B,#0PHUI:RET/*Name:T0中断处理程序,*Action:数码管动态显示*/T0_INT: PUSH PSW
12、PUSHACCPUSHBCLREAJBERROR,DIS_ERROR;如果接收数据错误,则去显示”ERROR“MOVDPTR,#TAB;*显示遥控器编码低4位*MOVA,CODE_1ANLA,#0FH;取地4位,显示个位MOVP2,#01111111BACALLCB;*显示遥控器编码高4位*MOVA,CODE_1ANLA,#0F0H;取地8位,显示十位SWAPA;高4位与地4位交换,以正确查表取?MOVP2,#10111111BACALLCB;*JBD_ER,DIS_W;如果接收编码不是本遥控板则去显示”-“;*显示当前按键值*MOVA,CODE_DMOVB,#10DIVABMOV40H,A;
13、暂存十位,现显示个位;*显示个位*MOVA,BMOVP2,#11101111BACALLCB;*显示十位*MOVA,40HCJNEA,#0,SS AJMPDIS_B0SS:MOVP2,#11110111BACALLCBAJMPDIS_B0;*数据显示错误(ERROR)*DIS_ERROR: MOVDPTR,#TAB1MOVA,#0MOVP2,#01001111B ;倒数第 1、3、4位显示RACALLCBMOVA,#1MOVP2,#10111111B;倒数第2位显示OACALLCBMOVA,#2MOVP2,#11110111B;倒数第4位显示EACALLCBAJMPDIS_B0;*显示”-“*
14、DIS_W: MOVDPTR,#TAB1 MOVA,#3MOVP2,#11100111B ACALLCB;*显示数据变量,可以用遥控板加减*DIS_B0:MOVDPTR,#TAB MOVA,DIS_BMOVB,#10DIVABMOV40H,A;暂存十位,现显示个位;*显示个位*MOVA,BMOVP2,#11111101BACALLCB;*显示十位*MOVA,40HMOVP2,#11111110BACALLCBT0_RET:POPBPOPACCPOPPSWSETBEARETI;*查表*CB:MOVCA,A+DPTRMOVP0,AACALLDELAY_SMGMOVP0,#0FFH; 清屏RET/*
15、 定时器1*/T1_INT:PUSHACCPUSHBPUSHPSWINCR3CJNER3,#255,QBMOVR3,#0JNBWJ,QBCPLJDQQB:;*判断当前设置数据是否为0,为0则初始化led*MOVA,DIS_BCJNEA,#0,M0MOVLED_M,#0AJMPM;*模式0,什么都显示*M0:MOVA,LED_MCJNEA,#0,LED_YDM:MOVP1,#0FFHMOVR4,#0FEHMOVR2,#0AJMPLED_HUI;*延时变量*LED_YD:MOVP1,R4MOVA,R2CJNEA,DIS_B,LKMOVR2,#0AJMPLK0LK:INCR2AJMPLED_HUI;
16、*模式1 右移*LK0:MOVA,LED_MCJNEA,#1,LED_Y1MOVA,R4RRAMOVR4,AAJMPLED_HUI;*模式2 左移*LED_Y1:MOVA,LED_MCJNEA,#2,LED_HUIMOVA,R4RLAMOVR4,A LED_HUI:POPPSWPOPBPOPACCRETI/* 延时处理程序*/;* DELAY R5*0.14MS ;IR解码使用*DELAY_140US: MOV R5,#1 DEL0: MOV R6,#2DEL1: MOV R7,#32DEL2: DJNZ R7,DEL2 DJNZ R6,DEL1 DJNZ R5,DEL0 RET;*数码管显示
17、延时*DELAY_SMG:MOV R7,#250DJNZ R7,$RET/*;数据编码*/;*数码管1-9,0,a,b,c,d,e,f代码表*/TAB: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah DB 20h,60h,30h,25h,0a9h,26h,0a1h,0b1h;*数码管ERROR代码表*/TAB1:DB0B8H,28h,0A1H,0F7H;R O E;*按键编码对应编号*TAB2:DB 0FFH,10H,03H,01H,06HDB 09H,1DH,1FH,0DHDB 19H,1BH,11H,15HDB 17H,12H,16H,4CHDB 40H,48H,
18、04H,00HDB 02H,05H,54H,4DHDB 0AH,1EH,0EH,1AHDB 1CH,14H,0FH,0CH;-/*初始化程序*/INIT:;*寄存器初始化类*; MOVSP,#60HMOVA,#0MOVB,#0MOVR7,#0MOVR6,#0MOVR5,#0MOVR4,#0FEH;LED显示初值MOVR2,#0MOVR3,#0MOVR1,#0;*位定义类*;D_REMBITP3.2;红外接收口定义ERRORBIT00H;读取错误标志位D_ERBIT01H;不是本遥控板编码BEEPBITP3.1;蜂鸣器JDQBITP3.0;继电器WJBIT02H;继电器通断标志位;*数据定义类*;DIS_BDATA30H ADDR_L DATA31H;地址低8位ADDR_HDATA32H;地址高8位CODE_1DATA33H;数据原码CODE_0DATA34H;数据反码CODE_DDATA36H;显示遥控板上面的数字LED_MDATA37H;led灯显示模式;*位定义初始化类*;SETBD_REM ; 红外接收口初始化CLRERROR;数据正确为0,错误为1CLRD_ER;是本遥控板为0,否则为1SETBBEEPSETBJDQCLRWJ;*数据初始化类*;MOVCODE_D,#0MOVDIS_B,#0MOVLED
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肾性高血压的治疗
- 做课件软件教学课件
- 活动安全应急预案
- 1.1.1反应热 焓变 课件 高二上学期化学人教版(2019)选择性必修1
- 吉林省2024七年级数学上册第1章有理数1.12有理数的混合运算课件新版华东师大版
- 犬皮肤癣菌病开题报告
- 踩高跷大班教案反思
- 肝门部胆管癌辅助治疗
- 让友谊之树常青说课稿
- 花点心说课稿
- 五年级上册英语期中试卷-闽教版
- 精神分裂症规范化治疗课件
- 2020建设工程造价数据存储标准
- 港口散装液体危险化学品港口经营人的装卸管理人员从业资格考试
- 人教版 六级上册数学 四单元《比》(省级作业设计大赛作品)
- 供应商年度评价内容及评分表
- 政府信息公开工作学习辅导
- 2023-2024学年湖北省武汉市洪山区九年级(上)期中数学试卷(含解析)
- 2024届甘肃省兰州市西北师大附中物理高一第一学期期中教学质量检测试题含解析
- 《强化学习理论与应用》动态规划法
- 甄嬛传英语剧本之滴血认亲
评论
0/150
提交评论