http://www.hbfydz.com

 

学习园地 邮购导航 联系我们 方圆商店

热忱欢迎您的到来!联系电话13513271716  0317-3082889  QQ:361801738          热忱欢迎您的到来!联系电话13513271716  0317-3082889  QQ:361801738

按遥控器任意键数码管加1--- 0--9循环

按遥控器任意键数码管加1--- 0--9循环显示:

实验板加一个接收头直接使用,如下图所示:

程序如下:
;********************************************************************
; *
;遥控器按任意键数码管加1,显示0--9依次循环 *
; *
; 作者:LK811011 QQ:104076687 *
; *
;***************************************************************

temp  equ 22h ;计数器数值存放内存位置

;******************************************************************
start:  mov temp,#0 ;初始化计数器,从0开始
MOV TMOD,#09H       ;设置定时0方式1,GATE=1
MOV P0,#28H ;数字0的代码送显示,开机显示0
clr p2.6 ;开数码管显示

MAIN: JB P3.2,$ ;等待遥控信号

;*******以下是9MS和4.5MS遥控信号电平的识别************************************

remote: MOV TL0,#0 ;//清零TL0
MOV TH0,#0 ;//清零TH0
SETB TR0 ;//开启定时器0
JNB P3.2,$ ;//等待高电平到来,避开遥控信号开始的9MS低电平
JB P3.2,$  ;//等待低电平,高电平到来,此时开始计数
CLR TR0;//高电平结束,停止计数
MOV A,TH0 ;//读取TH0值,TL0忽略不计
CJNE A,#11H,exit;//A中的值应该是11H即遥控信号4.5MS的高电平(4.5MS=1194H)=17(十进制)

inc temp ;对计数器加1
mov a,temp
cjne a,#10,exit ;判断计数器是否满10
mov temp,#0 ;满10就清零重新开始
exit: setb p3.2

;显示子程序

display:
mov a,temp  ;把当前计数器值送A
mov dptr,#numtab ;指定查表启始地址
MOVC A,@A+DPTR  ;查个位数的7段代码
mov p0,a  ;送出个位的7段代码
ajmp main

;平凡实验板上的7段数码管0~9各数字的显示代码

numtab: DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H

;****************************************************************

END

以上程序用实验板加一个遥控接收头就可以直接看到结果了.(转载)

返回