用51单片机模拟空调遥控开关-汇编程序

发布者:飘然出尘最新更新时间:2015-07-16 来源: 51hei关键字:51单片机  模拟空调遥控开关  汇编程序 手机看文章 扫描二维码
随时随地手机看文章
;***************************************
;遥控4按键模拟 15F104E 
;内部振荡11.0592M
;按1就P3.0低电平,按2就P3.1低电平 按3就P3.2低电平  按4就P3.3低电平 ;蜂呜器提示, 
;自学习功能,按住要学习的键2秒,;蜂呜器长响,学习成功停止响
;***************************
YHM EQU 2fh;用户码
SET0  EQU 30H;
SET1  EQU 31H;
SET2  EQU 32H;
SET3  EQU 33H;


;;;;;;;;;;;;;;;;;;;;;;;;;
IAP_DATA EQU 0C2H
IAP_ADDRH EQU 0C3H
IAP_ADDRL EQU 0C4H
IAP_CMD  EQU 0C5H
IAP_TRIG EQU 0C6H
IAP_CONTR EQU 0C7H

ENABLE_IAP EQU 83H ;系统工作时钟<12MHZ时

;************************
IR_KEY BIT P3.5;红外
beep bit p3.3




MA1 EQU 7BH ;
MA2 EQU 7CH ;
MA3 EQU 7DH 
MA4 EQU 7EH ;
RED_32 EQU 7FH;

;************
ORG  0H ;程序开始
AJMP START
ORG  30H
;*************
; 单片机初始化
START:
mov p3,#0ffh 


MOV DPTR, #0
call EEPROMR
mov 30h,a
inc dptr
call EEPROMR
mov 31h,a
inc dptr
call EEPROMR
mov 32h,a
inc dptr
call EEPROMR
mov 33h,a

MOV DPTR, #200h
call EEPROMR
mov 2fh,a


;********************************
MAIN:
orl p3,#17h
mov a,p3
anl a,#17h
cjne a,#17h,d2
jmp d4
d2:
call delay2S
orl p3,#17h
mov a,p3
anl a,#17h
cjne a,#17h,d3
jmp d4

d3:
cpl a
anl a,#17h
mov 20h,a
clr beep

d4:
jb IR_KEY,MAIN
ACALL IR
mov a,20h
jnz d4
AJMP MAIN ;返回
;***************************



IR:
PUSH ACC
PUSH PSW

LCALL   DELAY1MS
LCALL   DELAY1MS
LCALL   DELAY1MS
LCALL   DELAY1MS

JB IR_KEY,IR_OUT;;高电平退出

JNB   IR_KEY,$;等 IR 变为高电平
LCALL DELAY2MS380US
LCALL DELAY2MS380US
JB     IR_KEY,IR_OUT;是否低电平

MOV  R0,#MA1;起始内存为7CH,共4个内存
JJJ:MOV  R3,#8  ;8位
BBB:JNB  IR_KEY,$;等 IR 变为高电平
;高电平后开始计数,计数值1 高电平1
MOV    R2,#0  ;1MS计数
CCC:
LCALL   DELAY1MS
JNB     IR_KEY,DDD ;低电平跳出计数
INC     R2;;高电平继续计数
CJNE    R2,#3,CCC;防止计数超时
AJMP IR_OUT
DDD:
CLR A
CLR C
SUBB A,R2 ;
MOV     A,@R0
RRC     A
MOV     @R0,A  ;处理完一位
DJNZ   R3,BBB;8位数据
INC     R0;换下一个内存
CJNE    R0,#RED_32,JJJ  ;写完个4内存
;4个8位码存入MA1~MA4中
;-------------------------------------

MOV  A,MA4
CPL  A
CJNE A,MA3,IR_OUT

jbc 0,s30
jbc 1,s31
jbc 2,s32
jbc 4,s33

MOV  A,MA2;
CJNE A,YHM,IR_OUT;
CALL IR_GOTO

IR_OUT:
POP     PSW
POP     ACC
RET

s30:mov set0,MA3
call bao0
call bao1
setb beep
jmp IR_OUT

s31:mov set1,MA3
call bao0
call bao1
setb beep
jmp IR_OUT

s32:mov set2,MA3
call bao0
call bao1
setb beep
jmp IR_OUT

s33:mov set3,MA3
call bao0
call bao1
setb beep
jmp IR_OUT
;----------------
IR_GOTO:mov a,ma3

[page]

CJNE A,SET0,E11
clr beep
clr p3.0
LCALL DELAY2MS380US
LCALL DELAY2MS380US
LCALL DELAY2MS380US
setb p3.0
setb beep
RET

E11:
CJNE A,SET1,E12
clr beep
clr p3.1
LCALL DELAY2MS380US
LCALL DELAY2MS380US
LCALL DELAY2MS380US
setb p3.1
setb beep
ret

E12:
CJNE A,SET2,E13
clr beep
clr p3.2
LCALL DELAY2MS380US
LCALL DELAY2MS380US
LCALL DELAY2MS380US
setb p3.2
setb beep
RET

E13:
CJNE A,SET3,E14
clr beep
clr p3.4
LCALL DELAY2MS380US
LCALL DELAY2MS380US
LCALL DELAY2MS380US
setb p3.4
setb beep
RET

E14:;

RET






;--------延时------
DELAY2MS380US:   ;1T  11.0592M
    MOV R6,#0DFH
DL0:
    MOV R5,#1CH
    DJNZ R5,$
    DJNZ R6,DL0
    RET
DELAY1MS:   ;1T   11.0592M
    MOV R6,#12H
DL05:
    MOV R5,#98H
    DJNZ R5,$
    DJNZ R6,DL05
    NOP
    RET

DELAY255MS:   ;
    MOV R7,#255
DL045:
call DELAY1MS
    DJNZ R7,DL045
    NOP
    RET

DELAY2S:   ;
    MOV R4,#7
DL1s:
call DELAY255MS
    DJNZ R4,DL1s
    RET


;************************
ERASE:;擦除
MOV IAP_CONTR,#83h;允许IAP/IAP操作
MOV IAP_CMD,#03H  ;扇区擦除
MOV IAP_ADDRH,DPH ;送高地址
MOV IAP_ADDRL,DPL ;送低地址
ACALL IAPXX       ;触发
RET
;************************
EEPROMW:;写
MOV IAP_CONTR,#83h;允许IAP/IAP操作
MOV IAP_CMD,#02H  ;送写命令
MOV IAP_ADDRH,DPH ;送高地址
MOV IAP_ADDRL,DPL ;送低地址
MOV IAP_DATA,A    ;A是要写入的数据
ACALL IAPXX       ;触发
RET
;************************
EEPROMR:;读
MOV IAP_CONTR,#83h;允许IAP/IAP操作
MOV IAP_CMD,#01H  ;送读命令
MOV IAP_ADDRH,DPH ;送高地址
MOV IAP_ADDRL,DPL ;送低地址
ACALL IAPXX       ;触发
MOV A,IAP_DATA    ;读出的数据放到A
RET
;----------

IAPXX:;触发
MOV IAP_TRIG, #5AH
MOV IAP_TRIG, #0A5H ;
NOP
NOP
ret
;---------------------

IAP_Disable:;禁止IAP/IAP操作
MOV IAP_CONTR,#0  
MOV IAP_CMD,#0    
MOV IAP_TRIG,#0   
MOV IAP_ADDRH,#0FFH
MOV IAP_ADDRL,#0FFH
RET

bao0:
MOV DPTR, #0;保存
call ERASE
mov a,30h
call EEPROMW
inc dptr
mov a,31h
call EEPROMW
inc dptr
mov a,32h
call EEPROMW
inc dptr
mov a,33h
call EEPROMW
call IAP_Disable

ret

bao1:
MOV DPTR,#200h;保存
call ERASE
MOV  A,MA2
mov 2fh,a
call EEPROMW
call IAP_Disable
ret

END
关键字:51单片机  模拟空调遥控开关  汇编程序 引用地址:用51单片机模拟空调遥控开关-汇编程序

上一篇:一个基于RS485总线的智能小区周界防盗报警系统设计
下一篇:STC89C52RC单片机8位流水灯程序

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

51单片机的数码管和矩阵键盘
使用4*4的矩阵键盘和一个数码管 在4*4的矩阵键盘上编码0-F的字符,和一个数码管显示每个键盘上输入的字符。 //4*4键盘检测程序,按下键后相应的代码显示在数码管上 #include reg51.h typedef unsigned char UINT8; UINT8 i=100; UINT8 j,k,temp,key; void delay(unsigned char i) { for(j=i;j 0;j--) for(k=125;k 0;k--); } UINT8 code table = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
[单片机]
海速芯8051单片机TM52F1376在电子投票机中的应用
8051单片机的应用可减小电子产品的尺寸、成本和复杂性,本篇文章主要介绍海速芯8051单片机TM52F1376在电子投票机中的应用。 TM52F1376电子投票机应用 电子投票机,也就是我们常看到的电视节目中给演唱歌手投票的工具,这是TM52F1376在电子领域的典型应用之一。 如使用某一项目设计的投票机可容纳八名参赛者,那么,八个按钮与八个参赛者相关,其中一个主按钮用于投票权限。通过使用主按钮,可以避免单个人进行多次投票,因为每个人都需要获得其投票的批准(一个人只能将一个选票投票给任何一位参赛者)。 此方案的应用框图由电源模块、按钮、单片机模块、LCD显示屏、蜂鸣器、EEPROM和晶体管等各种模块组成。投票人员的
[单片机]
51单片机定时/计数器详解(工作原理及模式、应用)
51单片机是基础入门的一个单片机,还是应用最广泛的一种。本文主要介绍51单片机定时/计数器,首先介绍了51单片机定时/计数器的工作原理,其次介绍了51单片机定时/计数器的工作模式,最后阐述了51单片机定时/计数器的应用,具体的跟随小编一起来了解一下吧。 51单片机的定时/计数器的概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,只要相邻两个计数脉冲之间的时间间隔相等,则计数值就代表了时间的流逝,因此,单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单
[单片机]
<font color='red'>51单片机</font>定时/计数器详解(工作原理及模式、应用)
从零开始51单片机教程 —— 14 单片机逻辑与或异或指令详解
单片机逻辑与或异或指令详解 ANL A,Rn ;A与Rn中的值按位'与',结果送入A中 ANL A,direct ;A与direct中的值按位'与',结果送入A中 ANL A,@Ri ;A与间址寻址单元@Ri中的值按位'与',结果送入A中 ANL A,#data ;A与立即数data按位'与',结果送入A中 ANL direct,A ;direct中值与A中的值按位'与',结果送入direct中 ANL direct,#data ;direct中的值与立即数data按位'与',结果送入direct中。 这几条指令的关键是知道什么是逻辑与。这里的逻辑与是指按位与 例:71H和56H相与则将两数写成二进制形式: (
[单片机]
基于USB总线和89C51单片机的数据采集系统设计
  在工业生产和科学技术研究过程的各行业中,常常要对各种数据进行采集,现在常用的采集方式是在PC机或工控机内安装数据采集卡,如A/D卡及 RS- 422卡、RS-485卡。采集卡不仅安装麻烦,易受机箱内环境的影响,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。而通用串行总线(Universal Serial Bus,简称USB)的出现能很好地解决以上这些冲突。我们利用89C51单片机设计了基于USB总线的数据采集设备,并可与MAX485结合起来实现数据的远程采集。 系统硬件设计   USB数据采集系统硬件模块主要由串行A/D转换器、89C51芯片、USB接口芯片和多路模拟开关等组成。硬件总体结构框图如
[单片机]
基于USB总线和89C<font color='red'>51单片机</font>的数据采集系统设计
51单片机串口工作方式O在扩展并行输出口中的应用
  一、系统工作原理      下图是一款1分钟-24小时定时时间可调的时间控制器,其印制电路板如右图所示。该控制器以AT89C2051单片机为核心,采用12MHz晶振,用内部定时器TO产生5ms时钟信号,由软件处理成分钟、小时段码数据,从串口RXD(P3.0)、TXD(P3.1)经IC2(74HC164)进行串/并转换后,送四位共阳极数码管Ul~U4的a~h端。显示采用动态扫描方式,P14~P1.7分别用作小时十位U1、个位U2,分钟十位U3、个位U4的位选,74HC04用作数码管的位驱动。U2的小数点(h段)用作秒闪。控制器以5s为一个显示周期,前3s显示已走时间,后2s显示剩余时间。显示剩余时间时,发光二极管LED1点亮。S
[单片机]
<font color='red'>51单片机</font>串口工作方式O在扩展并行输出口中的应用
基于51单片机的99秒马表设计
1.实验任务 (1).开始时,显示“00”,第1次按下SP1后就开始计时。 (2).第2次按SP1后,计时停止。 (3).第3次按SP1后,计时归零。 2.电路原理图 图4.17.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 (2).把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2
[单片机]
基于<font color='red'>51单片机</font>的99秒马表设计
AT89C51单片机在电话远程控制器中的应用
随着通讯产业的发展,电话机已经走进了千家万户,利用电话机进行远程控制的技术也日益用于生活中,本文设计了一种电话远程控制系统,该系统主要应用于电话遥控控制的家用电器,用户在户外可通过任意一部双音多频电话(包括手机、电话分机),根据语音提示,可以对各种电器(如电饭锅、微波炉等电器)进行远程控制。   1 系统结构 此系统主要包括电话振铃检测电路,电话自动拾机和挂机电话,DTMF信号解码电路,语音提示电路,以及音频放大电路,系统结构框图如图1所示。 当有电话呼入时,电话振铃检测电路检测到有振铃并等待系统默认的振铃次数后,控制器自动拾机。用户在语音提示下依次输入用户的操作密码和操作指令。DTMF解码电路将接收到的DT
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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