历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2018年01月15日 | 单片机遥控控制流水灯程序

2018-01-15 来源:eefocus

;--------------------------------------------------------------------------------
IRCOM EQU 20H ;20H-23H IR使用
IRIN EQU P3.2
D1 EQU 30H ;流水灯移位数缓存
D2 EQU 31H
NO_M EQU 44H
;--------------------------------------------------------------------------------

ORG 0000H
AJMP MAIN
ORG 0003H ;外部中断INT0入口地址
AJMP IR_IN
;--------------------------------------------------------------------------------

org 040h
MAIN:
MOV SP,#60H
MOV PSW,#00H
MOV A,#00H
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
mov 30h,#00h
mov 31h,#00h
MOV IE,#81H ;允许总中断中断,使能 INT0 外部中断
MOV TCON,#01H ;触发方式为脉冲负边沿触发
SETB IRIN
MOV NO_M,#00H
loop1: mov p0,#00h
loop: 
MOV A,NO_M
JZ loop1;开机无遥控按键按下点亮所有二极管
RL A;实现1~8倍乘(及1变2,2变4....)
MOV DPTR,#TAB_KEY
NOP
JMP @A+DPTR;散转
TAB_KEY: AJMP LOOP
AJMP TAPE1
AJMP TAPE2
AJMP TAPE3
AJMP TAPE4
AJMP TAPE5
AJMP TAPE6
AJMP TAPE7
AJMP TAPE8

;------------------以下为花样灯显示样式--------------------
TAPE1: MOV D1,#08H;单灯点亮右移
MOV A,#0FEH
QQ0: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ0
ajmp loop
TAPE2: MOV D1,#08H;单灯点亮左移
MOV A,#7FH
QQ1: MOV P0,A
ACALL YS
RR A
DJNZ D1,QQ1
ajmp loop
TAPE3: MOV D1,#08H;暗点右移
MOV A,#01H
QQ2: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ2
ajmp loop
TAPE4: MOV D1,#08H;暗点右移
MOV A,#80H
QQ3: MOV P0,A
ACALL YS
RR A
DJNZ D1,QQ3
ajmp loop
TAPE5: MOV D1,#08H;亮点右左往返流动
MOV D2,#08H
MOV A,#0FEH
QQ4: MOV P0,A
ACALL YS
RL A
DJNZ D1,QQ4
AJMP NBA
NBA: RR A
MOV P0,A
ACALL YS
DJNZ D2,NBA
ajmp loop
TAPE6: MOV R5,#00H;全亮后向右檫除,向左点亮
QQ5: INC R5
MOV A,R5 
MOV DPTR, #NU_TAB1
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
ACALL YS
CJNE R5,#11H,QQ5
ajmp loop
NU_TAB1: DB 00H
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
DB 7FH,3FH,1FH,0FH,07H,03H,01H,00h

TAPE7: MOV R5,#00H;模拟队列向左经过显示窗口
QQ7: INC R5
MOV A,R5
MOV DPTR, #NU_TAB2
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
CJNE R5,#0FH,QQ7
ajmp loop
NU_TAB2: DB 00H
DB 7FH,0BFH,5FH,0AFH,57H,0ABH,55H,0AAH,0D5H
DB 0EAH,0F5H,0FAH,0FDH,0FEH,0FFH
TAPE8: MOV R5,#00H;全亮后从两端往中间擦,再从两端往中间点亮
QQ9: INC R5
MOV A,R5
MOV DPTR, #NU_TAB3
MOVC A,@A+DPTR
MOV P0,A
ACALL YS
CJNE R5,#10H,QQ9
ajmp loop
NU_TAB3: DB 00H
DB 00H,81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H,00H
DB 81H,0C3H,0E7H,0FFH,0E7H,0C3H,81H
;----------------------------灯点亮延时---------------------

YS: MOV R7,#250
CBA: MOV R6,#250
DJNZ R6,$
DJNZ R7,CBA
RET
; IR 译码子程序
;--------------------------------------------------------------------------------
IR_IN:
CLR EA ;暂时关闭CPU的所有中断请求
PUSH ACC
PUSH PSW
SETB PSW.3 ;选择工作寄存器组1
CLR PSW.4
MOV R2,#04H
MOV R0,#IRCOM
I1: JNB IRIN,I2 ;等待 IR 信号出现
DJNZ R2,I1
JMP IR_OUT ;IR信号没出现,退出。
I2: MOV R4,#20
I20: CALL DEL
DJNZ R4,I20
JB IRIN,I1 ;确认IR信号出现
I21: JB IRIN,I3 ;循环等IR变为高电平;变高就过了9MS低电平引导区
CALL DEL 
JMP I21
I3: MOV R3,#0 ;8位数清为0
LL: JNB IRIN,I4 ;等IR变为低电平,变低就过了4.5MS结束码
CALL DEL
JMP LL
I4: JB IRIN,I5 ;等 IR 变为高电平,过了0或1的0.56MS低电平区
CALL DEL
JMP I4
I5: MOV R2,#0 ;0.14ms 计数
L1: CALL DEL ;看高电平保持时间,即几个0.14MS
;"0"不超过(1.125-0.56)/0.14=4个
;"1"至少有(2.25-0.56)/0.14=12个
JB IRIN, N1 ;等 IR 变为高电平
;IR=0,检查R2中的计数值
MOV A,#8
CLR C
SUBB A,R2 ;判断高低位,R2小于8,C=0,R2大于8,C=1
;取5,6,7,8,9,10,11都可,中间数最保险
;若C=0说明R2小于8,说明收到的是"0"位
;若C=1说明R2大于8,说明收到的是"1"位
MOV A,@R0 ;R0=20H已被清0,及A=0
RRC A ;RRC后A内被一位一位C替代了,低位是第一个C的值
MOV @R0,A ;处理完一位,暂时存到20H
INC R3 
CJNE R3,#8,LL ;需处理完8位,1,2,3,4,5,6,7,8位放入20H,第8位是最高位
MOV R3,#0
INC R0 ;换缓存21H,22H,23H,一个缓存存8位0,1组合
CJNE R0,#24H,LL ;收集到4字节了哦(用户反码=21H,键码=22H,键反码=23H)
JMP IR_COMP ;
N1: INC R2
CJNE R2,#30,L1 ;0.14ms计数过长则时间到自动离开

IR_OUT: POP PSW
POP ACC
SETB EA
RETI
;--------------------------------------------------------------------------------
;键值比较与键值数据处理
;22H存入键码,23H存入键码的反码
;--------------------------------------------------------------------------------
IR_COMP: 
;MOV A,20H
;XRL A,#00H;不同遥控器用户码不同的,加上比较遥控就专用了
;JNZ,IR_OUT
;MOV A,21H
;XRL A,#0DFH;同上,双保险
;JNZ IR_OUT
MOV A,22H
CPL A
XRL A,23H ;将22H取反后和23H比较
JNZ IR_OUT ;如果不等表示接收数据发生错误,放弃
MOV R1,#08H;只用遥控的8个按键,看按下的按键是第几个
MOV DPTR,#TAB_REMOT;指针指向遥控键值表
LOOKUP:
MOV A,R1 
MOVC A,@A+DPTR
XRL A,22H
JZ REMBAK
DJNZ R1,LOOKUP
REMBAK:
MOV NO_M,R1
nop
sjmp ir_out
;-------------------------遥控键值表---------------------------------------------
TAB_REMOT:;其他6221/6222遥控器要先测码建立此表
DB 00H
DB 04H,06H,07H,08H
DB 0AH,0BH,0CH,0EH;只用遥控数字1-8按键
;================================
;6121 遥控器(音响 单片机 网WWW.MCU51AV.COM)

;DVD遥控1-8数字键
;04H,06H,07H,08H,0AH,0BH,0CH,0EH
; 1 2 3 4 5 6 7 8 (遥控器数字键)
;--------------------------------------------------------------------------------
; DELAY R5*0.14MS
DEL:
MOV R5,#1 ;IR解码使用
DEL0: MOV R6,#2
DEL1: MOV R7,#32
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
DJNZ R5,DEL0
RET
;------------------------------------------------------------------
DELAY1: ;数码管延时4MS

MOV R6,#20
DL2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL2
RET
;-----------------------------------------------------------------
END ;结束


推荐阅读

史海拾趣

Fuji Electric Co Ltd公司的发展小趣事

以下是五个关于Fuji Electric Co., Ltd.(富士电机)公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

Fuji Electric Co., Ltd.(富士电机)成立于1923年,是古河电器工业与德国西门子资本技术合作的产物。公司最初以电气机器制造为主,迅速在日本市场站稳脚跟。在成立初期,富士电机便致力于技术创新和产品质量的提升,逐渐在电机制造领域建立了良好的声誉。通过不断的技术积累和市场拓展,富士电机逐渐成长为日本电机行业的领军企业之一。

2. 多元化战略的实施

随着市场的不断变化和技术的不断进步,富士电机开始实施多元化战略。公司不仅继续深耕电机制造领域,还积极拓展至电子设备、零售终端设备等多个领域。通过并购和内部孵化等方式,富士电机成功进入了多个新兴市场,并在这些领域取得了显著成就。例如,在自动贩卖机领域,富士电机凭借其先进的技术和卓越的产品质量,占据了日本国内第一的市场份额。

3. 国际市场的开拓

富士电机深知国际市场的重要性,因此一直致力于海外市场的拓展。公司通过在海外设立分支机构、与当地企业合作等方式,成功将产品和服务推向了全球市场。在国际市场上,富士电机凭借其高品质的产品和专业的服务赢得了广泛的认可和好评。同时,公司还积极参与国际标准的制定和推广工作,提升了自身的国际影响力。

4. 技术创新与研发实力的提升

技术创新是富士电机持续发展的重要动力。公司不断加大研发投入力度,建立了完善的技术创新体系。通过自主研发和合作研发等方式,富士电机在多个技术领域取得了重大突破。例如,在电力电子、自动化控制等领域,富士电机推出了多款具有自主知识产权的创新产品和技术解决方案。这些创新成果不仅提升了公司的核心竞争力还推动了整个行业的发展。

5. 数字化转型与智能化升级

面对数字化转型的浪潮富士电机积极应对挑战并抓住机遇。公司开始推进数字化转型和智能化升级工作通过引入先进的数字化技术和智能化设备提升生产效率和产品质量。同时富士电机还加强了对大数据、云计算等前沿技术的研发和应用推动了公司业务的智能化发展。这些举措不仅提升了公司的市场竞争力还为公司未来的可持续发展奠定了坚实基础。

泽耀科技(Ashining)公司的发展小趣事

在国内市场取得一定成绩后,泽耀科技(Ashining)开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,泽耀科技还积极寻求与国际先进技术的交流与合作,不断提升自身的技术水平和产品质量。

AAC [American Accurate Components]公司的发展小趣事

AAC公司的创立可以追溯到上世纪90年代初,当时电子音响器件市场正迎来快速发展的机遇。AAC公司敏锐地捕捉到了这一市场趋势,迅速行动,与德国投资者共同成立了中德合资常州威利来电子音响器件有限公司。这一合资举措为AAC带来了先进的生产技术和管理经验,使其生产的讯响器和微型扬声器迅速打开了德国市场的大门。这一成功的合资经验为AAC后续的发展奠定了坚实的基础。

ANADIGICS公司的发展小趣事

随着业务的不断拓展,AAC公司意识到美国市场的巨大潜力。于是,在1996年,AAC决定在美国设立分公司,专门负责美国市场的销售。与此同时,为了满足不断增长的市场需求,AAC还在深圳设立了美欧电子有限公司,专门批量生产手机用讯响器。这一系列的举措使得AAC的产品线更加丰富,产能也得到了大幅提升。

中移物联网(Chinamobile)公司的发展小趣事

2024年2月,中移物联网携自主打造的专业通信模组品牌——中移物联OneMO亮相巴塞罗那世界移动通信大会。这一品牌展示了公司在物联网模组领域的创新能力和技术实力。通过与国际知名企业的交流与合作,中移物联网进一步拓宽了国际视野,为公司的国际化发展提供了有力支持。

欧密格光电(Amicc)公司的发展小趣事

中移物联网始终秉持开放、合作、共享的发展理念,与国内外众多企业建立了紧密的合作关系。公司积极与硬件设备厂商、软件开发商、解决方案提供商等开展技术合作,共同推动物联网技术的创新与应用。同时,中移物联网还与行业协会、学术机构建立合作关系,加强技术交流和合作研究,为构建良好的物联网产业生态做出了积极贡献。这些合作不仅提升了公司的技术实力和市场竞争力,也推动了整个物联网行业的健康发展。

问答坊 | AI 解惑

电路板设计求救?急〉〉〉〉〉〉。

小弟要设计一电路板,输出要求bnc接口的,求助各位高手直接焊到板子上的bnc接口的型号,及封装?先谢拉。…

查看全部问答>

这样的干扰怎么解决?请赐教

本人设计的工业仪表,遇到这样的问题:输入信号0-20MV。当用手触摸输入端子的时候,显示值会波动,这是什么干扰(好象是串模干扰),如何解决?注明:信号是经过了2个模拟开关(CD4051),由OP07放大 再采样。…

查看全部问答>

怎样写testbench

前段时间看到有人在问,现分享下 有vhdl的testbench详细例子,verilog的谁有,给分享下…

查看全部问答>

实在不想干了,怎么找老板要年终奖

最近很郁闷,实在不想干了,想拿年终奖走人。省得年底又赶上春运高峰,想问老板要年终奖,怎么说比较好啊?         多谢多谢。…

查看全部问答>

晶振的好坏鉴别方法

晶振的好坏鉴别方法…

查看全部问答>

LPC1114资料汇总

LPC1114 datasheet深度解析LPC1100低功耗设计的七个秘密以LPC1100产品进行设计32位MCU开发全攻略上32位MCU开发全攻略下LPC1000 系列 Q&A及支持 …

查看全部问答>

pxa3XX 从CF卡上启动nk.bin 的bootloader

    请问各位大侠有谁做过pxa310或者pxa270的bootloader 要求从CF卡启动nk.bin       我应该用什么软件来编译,用wce6.0 还是ARM提供的AXD     是不是wce6.0下生成bootimage.nb0 就是bootloader 我用仿 ...…

查看全部问答>

急急急~~

各位大哥,小弟我最近在学嵌入式,用的是ARM7 S3C44BOX,最近碰到一个问题,本人想从CF卡上面下载数据到主机上,但是试验机上插上CF卡后,电脑没检测新硬件设备啊什么的,也就是说我的程序美和CF卡联系上,我是通过USB线连接试验机和电脑的,我不知 ...…

查看全部问答>

上电瞬间会有个尖峰

                                 有些口线上电的瞬间会产生一个时间很短的尖峰,没弄明白。请香主解答一下,谢谢!…

查看全部问答>

STVP的缺陷!

经过验证,STVP软件对STM32烧录的支持有重大缺陷.版本是3.2.0 问题是 1.    当不使用STVP的"project"菜单建立并打开STP工程文件时,只通过configure选择STLINK及STM32型号,然后通过open打开一个.HEX文件进行下载,可以烧录STM32( ...…

查看全部问答>