| 注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 |
![]() |
| 首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 |
| 选择分类:当前分类——电子制作 相关联或者相类似的文章: 怎样安装AT51编程板的USB转串口软件?(8206) 装在火柴盒里的悄悄听别人讲话的发射器(1999) 红外感应电子狗制作详解(1560) 台灯触摸开关(1560) ++ 带限流保护的可调稳压电源 (1331) 分立电子开关、OTL功放详解(1274) 用单片机控制字符型液晶显示模块(1249) 厨房定时器(1160) 电子制作专用微型模块盒子(1132) 性能可靠的60W石英灯用电子变压器(1091) 做梦机的制作(1078) 自己动手制作无线话筒(944) MA21小型电子调速器的制作(939) 500米无外壳四通道遥控模块(926) 关于“D40”最早的文章(907) 用三端稳压LM317制作的甲类功放(898) ++ 汽车电池电压监视器 ++(897) 电子小鸡(896) 简单实用的遥控开关(895) 简易电话机测试装置(889) 首页 前页 后页 尾页 本站推荐: | 单键学习型遥控器 单键遥控码学习控制器电路原理图
;**********************************************************************
;* *
;* KEYX0 P1.0 * 1 40 * VCC *
;* KEYX1 P1.1 * 2 39 * P0.0 KEYY0 *
;* KEYX2 P1.2 * 3 38 * P0.1 KEYY1 *
;* KEYX3 P1.3 * 4 37 * P0.2 KEYY2 *
;* SCL P1.4 * 5 36 * P0.3 KEYY3 *
;* SDA P1.5 * 6 35 * P0.4 KEYY4 *
;* STUDYLAMP P1.6 * 7 34 * P0.5 KEYY5 *
;* LAMP P1.7 * 8 33 * P0.6 KEYY6 *
;* RST * 9 32 * P0.7 KEYY7 *
;* RXD P3.0 * 10 MCS-51 31 * EA VDD *
;* TXD P3.1 * 11 30 * ALE *
;* STUDYKEY INT0 P3.2 * 12 29 * PSEN *
;* INT1 P3.3 * 13 28 * P2.7 A15 DEV7 *
;* REMOTEIN T0 P3.4 * 14 27 * P2.6 A14 DEV6 *
;* REMOTEOUT T1 P3.5 * 15 26 * P2.5 A13 DEV5 *
;* WR P3.6 * 16 25 * P2.4 A12 DEV4 *
;* RD P3.7 * 17 24 * P2.3 A11 DEV3 *
;* XTAL2 * 18 23 * P2.2 A10 DEV2 *
;* XTAL1 * 19 22 * P2.1 A9 DEV1 *
;* VSS * 20 21 * P2.0 A8 DEV0 *
;* *
;**********************************************************************
;
;
SPBASE EQU 70H ;堆栈基址
IEVAL EQU 00H ;关所有中断
MEMBASE EQU 08H ;工作寄存器基址
MEMS EQU 67H ;工作寄存器个数
;
;
BITNMB EQU 08H ;一个字节包含八个位
;
KEYFUNFLAG EQU 80H ; 键功能索引
KEYFUNNMB EQU 81H ;键功能号
KEYFUNRW EQU 82H ;遥控信号读写标志
READFLAG EQU 88H ;读标记
WITERFLAG EQU 99H ;写标记
;
TMPHADDR EQU 08H ;读入高电平存放首址
TMPLADDR EQU 90H ;读入低电平存放首址
READTIME EQU 00H ;读入数据指令时间
; LOWH EQU R4 ;起始位存放高地址
; LOWL EQU R5 ;起始位存放低地址
STUDYLAMP EQU P1.6 ;学习指示灯
LAMP EQU P1.7 ;未定义指示灯
STUDYKEY EQU P3.2 ;学习键
;
REMOTEIN EQU P3.4 ;遥控输入
REMOTEOUT EQU P3.5 ;遥控输出
DELAYCONUT EQU 30H ;延时值
DELAYCONUT0 EQU 0FFH ;延时值
T1COUNT EQU 0F3H ;T1计数值
TMODVAL EQU 22H
TCONVAL EQU 41H
PCONVAL EQU 00H
T2CONVAL EQU 00H
SCONVAL EQU 0F8H
IPVAL EQU 01H
;
;
;*************************************
;* *
;* 主程序和中断程序入口 *
;* *
;*************************************
ORG 0000H
AJMP START
ORG 0003H
AJMP INTEX0
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
AJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
;
;*************************************
;* *
;* 初始化程序中的各变量 *
;* *
;*************************************
CLEARMEMIO: CLR A
DEC A
MOV P0,A ;清 I/O 口
MOV P3,A
MOV P1,A
CLR A
MOV P2,A
CLR STUDYLAMP
CLR LAMP
CLR REMOTEOUT
SETB REMOTEIN
MOV R0,#MEMBASE ;清工作寄存器
MOV R1,#MEMS
CLEARMEM: MOV @R0,A
INC R0
DJNZ R1,CLEARMEM
MOV R0,#KEYFUNRW
MOV @R0,#READFLAG
MOV SP,#SPBASE ;设堆栈基址
MOV IE,#IEVAL ;关所有中断
MOV IP,#IPVAL
MOV TMOD,#TMODVAL
MOV PCON,#PCONVAL
MOV SCON,#SCONVAL
MOV TH1,#T1COUNT
MOV TL1,#T1COUNT
SETB EX0
SETB EA
RET
;
;*************************************
;* *
;* 主程序 *
;* *
;*************************************
START: LCALL CLEARMEMIO ;初始化
;
MAIN: LCALL KEYWORK ;主体程序
LJMP MAIN
NOP ;PC值出错处理
NOP
NOP
LJMP START
;
;*************************************
;* *
;* T1中断服务程序 *
;* *
;*************************************
INTT1: CPL REMOTEOUT ;40kHZ
RETI
;
;*************************************
;* *
;* 载波合成 *
;* *
;*************************************
REMOTETX: MOV R0,#TMPHADDR
MOV R1,#TMPLADDR
SETB LAMP
; CPL STUDYLAMP
MOV A,R4
MOV R3,A
JZ LOWBACK
CLR A
DEC A
LOWBACKTMP: MOV R2,A ;起始位复原
LOWBACKTMP0: SETB TR1
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LOWBACKTMP0
DJNZ R3,LOWBACKTMP
LOWBACK: MOV A,R5
MOV R2,A
LOWBACKTMP1: SETB TR1
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LOWBACKTMP1
;
TMP0: MOV A,@R0 ;高电平处理
MOV R2,A
; CPL LAMP
TMP1: CLR TR1
CLR ET1
CLR REMOTEOUT ;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,TMP1
INC R0
TMPP: MOV A,@R1
MOV R2,A
; CPL LAMP
TMP2: SETB TR1 ;低电平处理
SETB ET1
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,TMP2
INC R1
MOV A,@R1
JZ OUT
AJMP TMP0
OUT: CLR TR1
CLR ET1
CLR LAMP
CLR REMOTEOUT
RET
;
;*************************************
;* 遥控数据读取 INT0中断程序 *
;* 高电平存TMPHADDR为首址RAM *
;* 低电平存TMPLADDR为首址RAM *
;*************************************
INTEX0: CLR ET1
CLR TR1
CLR EX0
CLR EA
SETB STUDYLAMP
CLR LAMP
MOV R0,#TMPHADDR
MOV R1,#TMPLADDR
CLR A
MOV DPH,A
MOV DPL,A
READHEAD: JNB REMOTEIN,READDATA ;寻找起始位
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READHEAD
;
READDATA: CJNE A,DPH,READDATA00
MOV DPH,A
AJMP READHEAD
;
READDATA00: MOV R3,DPH
MOV DPH,A
MOV DPL,A
READLOOP01: JB REMOTEIN,READDATA02 ;读起始位
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP01
;
READDATA02: CLR LAMP
MOV R4,DPH
MOV R5,DPL ;存起始位
MOV DPH,#00H
MOV DPL,#READTIME
AJMP READLOOP1
;
READDATA1: SETB LAMP ;存高电平
MOV @R0,DPL
INC R0
MOV DPL,#READTIME
MOV DPH,#00H
READLOOP0: JB REMOTEIN,READDATA2 ;读低电平
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP0
;
READDATA2: CLR LAMP ;存低电平
MOV @R1,DPL
INC R1
MOV DPL,#READTIME
MOV DPH,#00H
READLOOP1: JNB REMOTEIN,READDATA3 ;读高电平
INC DPTR
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
AJMP READLOOP1
;
READDATA3: CLR A
CJNE A,DPH,READDATA4
AJMP READDATA1
;
READDATA4: MOV @R0,A
MOV @R1,A
;
SETB LAMP
CLR STUDYLAMP
SETB REMOTEIN
READEND: JNB STUDYKEY,READEND
MOV R0,#KEYFUNRW
MOV @R0,#WITERFLAG
SETB EX0
SETB EA
RETI
;
;*************************************
;* *
;* 键工作子程序 *
;* *
;*************************************
KEYWORK: SETB P1.0
JNB P1.0,KEY0
KEYOUT: RET
;
KEY0: LCALL DL10MS ;延时去抖动
JB P1.0,KEYOUT
LJMP REMOTETX
;
;*************************************
;* *
;* 延时 255 X 2 = 512 us *
;* *
;*************************************
DELAY: MOV R0,#DELAYCONUT0
DELAY1: DJNZ R0,DELAY1
RET
;
;*************************************
;* *
;* 延时25 ms *
;* *
;*************************************
DL10MS: MOV R1,#DELAYCONUT
DL10MS1: LCALL DELAY
DJNZ R1,DL10MS1
RET
;
;
END
1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。 2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! |
|
本站协议 |
版权信息 |
关于我们 |
本站地图 |
营业执照 |
发票说明 |
付款方式 |
联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389 |