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

发布者:平和的心情最新更新时间:2015-05-13 来源: 51hei关键字:合泰单片机  接收红外  遥控器程序  NEC码 手机看文章 扫描二维码
随时随地手机看文章
;;内容:按下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
ORG 0000H
JMP A1
ORG 04H ;外部中断0入口地址
JMP ZD01 ; 
ORG 0014H ;多功能中断入口地址
JMP ZD1
ORG 30H ;
Q1:
DC 03FH ; 0
DC 006H ; 1
DC 05BH ; 2
DC 04FH ; 3
DC 066H ; 4
DC 06DH ; 5
DC 07DH ; 6
DC 007H ; 7
DC 07FH ; 8
DC 06FH ; 9
DC 077H ; A
DC 07CH ; B
DC 039H ; C
DC 05EH ; D
DC 079H ; E
DC 071H ; F 
A1: 

MOV A,3FH ;显示内容
MOV [8AH],A ;第一位数码管段码显示内容寄存器
MOV A,3FH ;显示内容
MOV [8BH],A ;第二位数码管段码显示内容寄存器
MOV A,3FH ;显示内容
MOV [8CH],A ;第三位数码管段码显示内容寄存器
MOV A,3FH ;显示内容
MOV [8DH],A ;第四位数码管显示内容寄存器 
MOV A,08H ;跟CP1C寄存器设置要求选择数据
MOV CP1C,A ;设置PC口为I/0口而不是中断口
CLR PCC ;设置pc 口为输出口
CLR PDC ;设置PD 口为输出口
MOV A,1 ;设置初始显示位码显示第一位
MOV [80H],A ;位码寄存器
MOV A,8AH ;设置对应第一位段码寄存器
MOV MP0,A ;间接寄存器指针
MOV A,00000000B ;
MOV PRM1,A ;设置外部中断0的管脚为PA.3
MOV A,00000010B ;
MOV INTEG,A ;设置外部中断0为下降沿触发
CLR ACERL ;设置PA口不为AD输入口
SET PAPU.3 ;设置PA.3上拉
SET PAC.3 ;设置PA.3为输入口
MOV A,08H ; 
MOV CP0C,A ;设置PA3不为比较器输入口
CLR PDC ;设置PD口为输出口
MOV A,01H ;设置PD口初始状态
MOV PD,A ;PD口显示初始状态
MOV A,00000000B ;设置TM2 计数时钟位为fSYS/4
MOV TM2C0,A
MOV A,11000001B ;设置TM2中断为定时/计数模式选择比较器A匹配
MOV TM2C1,A
MOV A,LOW  5000 ;设置中断时间为5000个时钟周期
MOV TM2AL,A ;低8位
MOV A,HIGH 5000 ;设置中断时间为5000个时钟周期
MOV TM2AH,A ;高8位
CLR MF0F ;清多功能中断0标志
CLR T2AF ;清定时器2较器A中断标志
SET MF0E ;使能多功能0中断
SET T2AE ;使能定时器2较器A中断
CLR INT0F ;清中断0标志
SET INT0E ;使能外部0中断
SET EMI ;使能总中断
SET T2ON ;开始计数
JMP $
;*************************************************
; 外部中断0服务子程序
;************************************************* 

ZD01: ;进入中断自动关闭总中断
SET EMI ;打开总中断允许嵌套
CLR INT0E ;关闭外部中断0避免为完成操作2次中断
MOV [0F2H],A ;压栈ACC到0F2H
MOV A,STATUS ;
MOV [0F3H],A ;压栈status标志寄存器到0F3H
MOV A,18 ;设置起始码时间(0.5*18=9MS)
MOV [0A0H],A
A2: CALL M001 ;调用0.5MS延时
SZ PA.3 ;9MS时间内判断PA3是否为高电平
JMP ZD02 ;是高电平不是起始码则跳出中断
SDZ [0A0H] ;判断是否到9MS
JMP A2 ;不到则返回继续等待
MOV A,9 ;设置结果码时间4.5MS(0.5*9=4.5MS)
MOV [0A0H],A ;
SNZ PA.3 ;判断是否为高电平(起始码是否结束, 
JMP $-1 ;起始码必须结束,结果码才能开始)
A3: CALL M001 ;调用0.5MS延时
SNZ PA.3 ;4.5MS时间内判断PA3是否为低电平
JMP ZD02 ;是低电平则不是结果码跳出中断
SDZ [0A0H] ;判断是否到4.5ms
JMP A3 ;不到这继续等待
SZ PA.3 ;到了则是结果码则等待判断结果码是否结束
JMP $-1 ;结果码必须结束后才能继续下一步判断
MOV A,8 ;设置接收的数为8bit
MOV [0A1H],A ;
MOV A,4 ;设置接收个数
MOV [0A2H],A ;
MOV A,3 ;设置分辨0或1的时间1.5MS以上为1
MOV [0A0H],A ;
MOV A,0A4H ;设置收到的数存到0A4H(地址码)0A5H(地址反码)
MOV MP1,A ;0A6H(数据码)0A7H(数据反码)
A4:
SNZ PA.3 ;判断0.565MS低电平是否结束
JMP A4 ;必须在0.565MS低电平结束后才能判断所收的数是1还是0
A5:
CALL M001 ;延时0.5MS
SNZ PA.3 ;1.5MS内判断PA3是否为0
JMP A6 ;是0则说明时间小于1.5MS为0
SDZ [0A0H] ;判断是否到1.5MS
JMP A5 ;1 ;否则继续等待
SET C ;置位标志C
RLC IAR1 ;通过带进位左移指令把当前数保存起来
JMP A7 ;
A6: 
CLR C ;清标志C
RLC IAR1 ;通过带进位左移指令把当前数保存起来
A7:

MOV A,3 ;到了1.5MS还是高电平说明为1
MOV [0A0H],A ;重新设置分辨0或1的时间1.5MS以上为1
SZ PA.3 ;判断是否结束回到0.565MS低电平状态
JMP $-1 ;必须要回到0.565MS才能接收下一个数
SDZ [0A1H] ;判断是否收够了8位数
JMP A4 ;否则继续
MOV A,8 ;重新设置位数
MOV [0A1H],A ;
INC MP1 ;间接寄存器加1
SDZ [0A2H] ;判断是否收够4个NEC码
JMP A4 ;
MOV A,[0A4H] ;地址码
MOV [8AH],A ;第一位数码管段码显示内容寄存器
MOV A,[0A5H] ;地址反码
MOV [8BH],A ;第二位数码管段码显示内容寄存器
MOV A,[0A6H] ;数据码
MOV [8CH],A ;第三位数码管段码显示内容寄存器
MOV A,[0A7H] ;数据反码
MOV [8DH],A ;第四位数码管显示内容寄存器 
ZD02: 
MOV A,[0F3H] ;弹栈后进先出先进后出 
MOV STATUS,A ;弹栈0F1H的数到标志寄存器
MOV A,[0F2H] ;弹栈0F0H的数到acc
CLR INT0F ;清中断标志
SET INT0E ;使能外部中断
RETI ;中断返回
;*******************************************************
; 中断服务子程序
;******************************************************* 
ZD1: 
MOV [0F0H],A ;压栈ACC到0F0H
MOV A,STATUS ;
MOV [0F1H],A ;压栈status标志寄存器到0F1H
CLR PC ;清PC(清屏幕) 
MOV A,Q1 ;数据表地址
CLR TBHP ;清数据表地址高位否则出错
ADD A,IAR0 ;利用间接寄存器找到要显示段码所在数据表的地址 
MOV TBLP,A ;表格指针寄存器TBLP
; TABRD PD ;查表并将数据存到PD口寄存器
MOV A,IAR0 ;
MOV PD,A ;显示收到的数到LED上
MOV A,[80H] ;位码寄存器
MOV PC,A ;将位码寄存器的数存到PC口寄存器
;段码和位码的数都有了所以数码管被点亮
INC MP0 ;间接寄存器指针加1指向下一个段码寄存器
RL [80H] ;左移位码寄存器控制下一个数码管
SNZ [80H].5 ;判断是否控制完4个数码管
JMP ZD2 ;退出中断继续
MOV A,1 ;是则从新初始化寄存器数据
MOV [80H],A ; 
MOV A,8AH ;千位数码管对应寄存器
MOV MP0,A ;存到间接寄存器0
ZD2: 
MOV A,[0F1H] ;弹栈后进先出先进后出 
MOV STATUS,A ;弹栈0F1H的数到标志寄存器
MOV A,[0F0H] ;弹栈0F0H的数到acc
CLR MF0F ;清多功能标志
CLR T2AF ;清定时器2比较器A标志
RETI ;中断返回 
;**************************************
; 延时子程序
;************************************** 
M001: 
MOV A,1
MOV [85H],A
M002: 
MOV A,3
MOV [86H],A
M003: 
MOV A,105 
MOV [87H],A
M004: 
SDZ [87H]
JMP M004
SDZ [86H]
JMP M003
SDZ [85H]
JMP M002 
    RET 
END

关键字:合泰单片机  接收红外  遥控器程序  NEC码 引用地址:合泰单片机接收红外遥控器程序(NEC码)

上一篇:自己写单片机操作系统2栈的应用
下一篇:合泰单片机PWM输出程序

推荐阅读最新更新时间:2024-03-16 14:02

单片机用作通用红外遥控接收器的设计
    摘要: 简单介绍红外遥控接收系统原理,给出用8051作遥控接收系统解码器的一种巧妙实现方法,以及完整的51汇编程序代码。包括解码系统配置及接口、软件设计要点及中断服务程序。     关键词: 8051 红外遥控 遥控码 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成,应用编/
[应用]
HOLTEK推出BS82C16A-3最新一代Flash触控单片机
Holtek推出新一代内建LED / LCD Driver的Flash触控MCU BS82C16A-3,BS82C16A-3支持16个触控按键,除了保有上一代的优点之外还比上一代触控MCU更省电,触控侦测的更新率更高,并且抗干扰的能力更好,而内建的LED / LCD Driver更俱备4段电流输出控制,可直推LED / LCD不须外挂限流电阻或三极管,大幅简化产品应用零件及降低成本,非常适合于俱备LED / LCD之小家电触控面板应用,BS82C16A-3同时也支持I2C / UART界面,可当主控IC亦可搭配主控MCU专门负责触控按键的侦测或LED / LCD的显示。 BS82C16A-3的特点在于工规 (-40℃ ~ 85
[单片机]
基于合泰单片机的家校联系系统设计
目前,中小学生家长与教师间的常见联系方式有开家长会、打电话、教师家访、家长到校、家长签字等,这些传统方式都存在弊端,其效果都很不理想。现在已经有不少学校使用爱贝通系统,不过这种系统的缺点也很明显,其功能比较单一,只有学生到达学校和离开学校时 用短信通知家长的作用。加上采用的是IC卡的工作方式,刷卡前往往挤满了学生互相争抢,浪费时间且容易发生安全事故,学生很容易忘记刷卡而使家长着急,甚至一些不喜欢家长约束的高年级学生还会骗家长说学校的刷卡机坏了,所以这种系统在学校中的市场推广也并不理想。 针对以上问题,设计了一个基于HOLTEK单片机的家校联系系统。任课教师与学生家长可以用它很方便地建立起日常的联系,能够对学生在学校和家
[单片机]
基于<font color='red'>合泰</font><font color='red'>单片机</font>的家校联系系统设计
Holtek推出HT68F20-1 (Enhanced) MCU
Holtek新推出I/O型的HT68F20-1及A/D型的HT66F20-1,主要是SRAM 64 Bytes不需切换Bank,Program Memory为1K x 16、SRAM 64 x8、内建32 x8 Data EEPROM,除Crystal、ERC Mode外并内建精准Internal RC Oscillator,提供4/8/12MHz及32kHz四种频率。具有4个Software SCOM输出,可直接驱动小点数LCD Panel,通讯接口并具有SPI / I2C 等多种选择。 HT68F20-1、HT66F20-1皆内建Holtek全新设计的Timer Module,可有Capture、Compare、Timer/
[单片机]
红外线接收控制器的制作
在生活中,我们常用到红外线控制各类电器,如彩电、空调、电风扇等,为我们带来较多的方便,但有时我们仍感到不方便。如看完电视后,用遥控器只能关掉电视主电源,电视仍处于待机状态,使用者还得走到电视跟前,按下电视电源开关方能放心。若想看电视,还得动身开电视,显得很麻烦,尤其是冬天躺在床上看电视,上上下下,深感不便。本文以利用红外遥控器来遥控风扇的制作方法为例(可任选一只红外线遥控器,能调速,软件稍作改变,可增加定时功能等),来介绍红外线接收控制器的制作方法,如果制作电视交流电源的开、关控制器,可与电视共用一只遥控器,制作也较简单些。 制作思路 红外遥控发射器是利用红外线作载体传送信息的,发射周期不等的经过调制后串行码,该串行
[工业控制]
基于51单片机红外线遥控器解码程序设计
描述 下面是一个对51实验板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。 ;================================================= ; 红外遥控接收 ;================================================= ; ew51仿真编程器 配套实验板学习例程 ; ; 中山单片机学习网 智佳科技 逸风 ; ; http://www.zsMCU.com ; E-mail:info@zsmcu.com ;===============
[单片机]
基于51<font color='red'>单片机</font>的<font color='red'>红外</font>线<font color='red'>遥控器</font>解码<font color='red'>程序</font>设计
Vishay 推出新一代系列微型红外 (IR) 接收器模块
Vishay采用Minimold、Mold和Minicast封装的微型红外接收器提高了灵敏度、噪声抑制能力和脉宽精度 新器件适用于遥控应用,提高了光辐射和射频辐射抑制能力 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出用于IR遥控应用的三个新一代系列微型红外 (IR) 接收器模块--- TSOP93xxx 、 TSOP94xxx 和 TSOP98xxx 。Vishay Semiconductors TSOP93xxx 、 TSOP94xxx 和 TSOP98xxx 系列器件提高了黑暗环境和复杂光源干扰环境下红外信号的灵敏度, 具有更好的射频噪声抑制能力和优异的脉宽精度
[测试测量]
Vishay 推出新一代系列微型<font color='red'>红外</font> (IR) <font color='red'>接收</font>器模块
HOLTEK单片机-数码管显示
功能说明: 4个共阳极七段显示器每次显示4个数字,从0-F共有16个字,分成3-0,7-4,B-8,F-C四组数字,每次显示一组,依次显示,循环不止。 电路说明: 电路图如下图所示: 本实验所使用的共阳极七段显示器是由4个七段显示器做在一起,所以4个七段显示器共享一组七段控制线,而每一个七段显示器都有自己的共阳极脚,故这组共阳极七段显示器共有12只引脚。 晶体管Q1-Q4 作为电子开关,使用PNP型三极管,当晶体管的基极为低电位时,发射极与集电极导通,但是会有0.2V的压降。 由于每一个晶体管的发射极都可接上电源供给所控制的共阳极七段显示器,故在七段显示器的每一段LED上必须串接一个
[单片机]
<font color='red'>HOLTEK</font><font color='red'>单片机</font>-数码管显示
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved