您的位置 首页 传感器

合泰单片机接纳红外遥控器程序(NEC码)

;;内容:按下PA3接的按键进中断LED数码管加1;数码管段码接法A-PD0,B-PD1G-PD6,H-PD7;数码管位码接法OM0-PC0COM4-PC3;红外头接-PA3;

;;内容:按下PA3接的按键进中止LED数码管加1

;数码管段码接法A-PD0,B-PD1….G-PD6,H-PD7
;数码管位码接法OM0-PC0…COM4-PC3
;红外头接-PA.3
;完好源代码下载:http://www.51hei.com/f/hthw.rar
include HT66F50.inc
ORG0000H
JMPA1
ORG04H;外部中止0进口地址
JMPZD01;
ORG0014H ;多功能中止进口地址
JMPZD1
ORG30H;
Q1:
DC03FH; 0
DC006H; 1
DC05BH; 2
DC04FH; 3
DC066H; 4
DC06DH; 5
DC07DH; 6
DC007H; 7
DC07FH; 8
DC06FH; 9
DC077H; A
DC07CH; B
DC039H; C
DC05EH; D
DC079H; E
DC071H; F
A1:

MOVA,3FH;显现内容
MOV[8AH],A;第一位数码管段码显现内容寄存器
MOVA,3FH;显现内容
MOV[8BH],A;第二位数码管段码显现内容寄存器
MOVA,3FH;显现内容
MOV[8CH],A;第三位数码管段码显现内容寄存器
MOVA,3FH;显现内容
MOV[8DH],A;第四位数码管显现内容寄存器
MOVA,08H;跟CP1C寄存器设置要求挑选数据
MOVCP1C,A;设置PC口为I/0口而不是中止口
CLRPCC;设置pc 口为输出口
CLRPDC;设置PD 口为输出口
MOVA,1;设置初始显现位码显现第一位
MOV[80H],A;位码寄存器
MOVA,8AH;设置对应第一位段码寄存器
MOVMP0,A;直接寄存器指针
MOVA,00000000B;
MOVPRM1,A;设置外部中止0的管脚为PA.3
MOVA,00000010B;
MOVINTEG,A;设置外部中止0为下降沿触发
CLRACERL;设置PA口不为AD输进口
SETPAPU.3;设置PA.3上拉
SETPAC.3;设置PA.3为输进口
MOVA,08H;
MOVCP0C,A;设置PA3不为比较器输进口
CLRPDC;设置PD口为输出口
MOVA,01H;设置PD口初始状况
MOVPD,A;PD口显现初始状况
MOVA,00000000B;设置TM2 计数时钟位为fSYS/4
MOVTM2C0,A
MOVA,11000001B ;设置TM2中止为守时/计数模式挑选比较器A匹配
MOVTM2C1,A
MOVA,LOW 5000;设置中止时刻为5000个时钟周期
MOVTM2AL,A;低8位
MOVA,HIGH 5000;设置中止时刻为5000个时钟周期
MOVTM2AH,A;高8位
CLRMF0F;清多功能中止0标志
CLRT2AF;清守时器2较器A中止标志
SETMF0E;使能多功能0中止
SETT2AE;使能守时器2较器A中止
CLRINT0F;清中止0标志
SETINT0E;使能外部0中止
SETEMI;使能总中止
SETT2ON;开端计数
JMP$
;*************************************************
;外部中止0服务子程序
;*************************************************

ZD01:;进入中止主动封闭总中止
SETEMI;翻开总中止答应嵌套
CLRINT0E;封闭外部中止0防止为完结操作2次中止
MOV[0F2H],A;压栈ACC到0F2H
MOVA,STATUS;
MOV[0F3H],A;压栈status标志寄存器到0F3H
MOVA,18;设置开端码时刻(0.5*18=9MS)
MOV[0A0H],A
A2:CALLM001;调用0.5MS延时
SZPA.3;9MS时刻内判别PA3是否为高电平
JMPZD02;是高电平不是开端码则跳出中止
SDZ[0A0H];判别是否到9MS
JMPA2;不到则回来持续等候
MOVA,9;设置成果码时刻4.5MS(0.5*9=4.5MS)
MOV[0A0H],A;
SNZPA.3;判别是否为高电平(开端码是否完毕,
JMP$-1;开端码有必要完毕,成果码才干开端)
A3:CALLM001;调用0.5MS延时
SNZPA.3;4.5MS时刻内判别PA3是否为低电平
JMPZD02;是低电平则不是成果码跳出中止
SDZ[0A0H];判别是否到4.5ms
JMPA3;不到这持续等候
SZPA.3;到了则是成果码则等候判别成果码是否完毕
JMP$-1;成果码有必要完毕后才干持续下一步判别
MOVA,8;设置接纳的数为8bit
MOV[0A1H],A;
MOVA,4;设置接纳个数
MOV[0A2H],A;
MOVA,3;设置分辩0或1的时刻1.5MS以上为1
MOV[0A0H],A;
MOVA,0A4H;设置收到的数存到0A4H(地址码)0A5H(地址反码)
MOVMP1,A;0A6H(数据码)0A7H(数据反码)
A4:
SNZPA.3;判别0.565MS低电平是否完毕
JMPA4;有必要在0.565MS低电平完毕后才干判别所收的数是1仍是0
A5:
CALLM001;延时0.5MS
SNZPA.3;1.5MS内判别PA3是否为0
JMPA6;是0则阐明时刻小于1.5MS为0
SDZ[0A0H];判别是否到1.5MS
JMPA5 ;1;不然持续等候
SETC;置位标志C
RLCIAR1;经过带进位左移指令把当时数保存起来
JMPA7;
A6:
CLRC;清标志C
RLCIAR1;经过带进位左移指令把当时数保存起来
A7:

MOVA,3;到了1.5MS仍是高电平阐明为1
MOV[0A0H],A;从头设置分辩0或1的时刻1.5MS以上为1
SZPA.3;判别是否完毕回到0.565MS低电平状况
JMP$-1;有必要要回到0.565MS才干接纳下一个数
SDZ[0A1H];判别是否收够了8位数
JMPA4;不然持续
MOVA,8;从头设置位数
MOV[0A1H],A;
INCMP1;直接寄存器加1
SDZ[0A2H];判别是否收够4个NEC码
JMPA4;
MOVA,[0A4H];地址码
MOV[8AH],A;第一位数码管段码显现内容寄存器
MOVA,[0A5H];地址反码
MOV[8BH],A;第二位数码管段码显现内容寄存器
MOVA,[0A6H];数据码
MOV[8CH],A;第三位数码管段码显现内容寄存器
MOVA,[0A7H];数据反码
MOV[8DH],A;第四位数码管显现内容寄存器
ZD02:
MOVA,[0F3H];弹栈后进先出先进后出
MOVSTATUS,A;弹栈0F1H的数到标志寄存器
MOVA,[0F2H];弹栈0F0H的数到acc
CLRINT0F;清中止标志
SETINT0E;使能外部中止
RETI;中止回来
;*******************************************************
;中止服务子程序
;*******************************************************
ZD1:
MOV[0F0H],A;压栈ACC到0F0H
MOVA,STATUS;
MOV[0F1H],A;压栈status标志寄存器到0F1H
CLRPC;清PC(清屏幕)
MOVA,Q1;数据表地址
CLRTBHP;清数据表地址高位不然犯错
ADDA,IAR0;使用直接寄存器找到要显现段码地点数据表的地址
MOVTBLP,A;表格指针寄存器TBLP
;TABRDPD;查表并将数据存到PD口寄存器
MOVA,IAR0;
MOVPD,A;显现收到的数到LED上
MOVA,[80H];位码寄存器
MOVPC,A;将位码寄存器的数存到PC口寄存器
;段码和位码的数都有了所以数码管被点亮
INCMP0;直接寄存器指针加1指向下一个段码寄存器
RL[80H];左移位码寄存器操控下一个数码管
SNZ[80H].5;判别是否操控完4个数码管
JMPZD2;退出中止持续
MOVA,1;是则重新初始化寄存器数据
MOV[80H],A;
MOVA,8AH;千位数码管对应寄存器
MOVMP0,A;存到直接寄存器0
ZD2:
MOVA,[0F1H];弹栈后进先出先进后出
MOVSTATUS,A;弹栈0F1H的数到标志寄存器
MOVA,[0F0H];弹栈0F0H的数到acc
CLRMF0F;清多功能标志
CLRT2AF;清守时器2比较器A标志
RETI;中止回来
;**************************************
;延时子程序
;**************************************
M001:
MOVA,1
MOV[85H],A
M002:
MOVA,3
MOV[86H],A
M003:
MOVA,105
MOV[87H],A
M004:
SDZ[87H]
JMPM004
SDZ[86H]
JMPM003
SDZ[85H]
JMPM002
RET
END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/317440.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部