资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一、键盘矩阵式键盘判别是否有键按下:JugeKeyPressed: CLRA MOVP1,#0FFH ANLP1,#00001111B ;列线低电平,判断行线是否有低电平 MOVA,P1 ORLA,#11110000B CPLA;A=0说明无键按下,A0说明有键按下 RET消抖判键:JugekeyBoard:LCALL JugeKeyPressed JZ JugeKeyEnd;如果A不为0,有键按下 LCALLDelay10ms ;去抖动 LCALL JugeKeyPressed ;再次判断有无键按下 JZ JugeKeyEnd SETBKeyPressed ;设置键盘按下标志 JugeKeyEnd: RET识别键值:JugeWhichKey:MOV ScanTimes,#04HMOVA,#11101111B ;P1.4置低不影响其他列 ScanLoop: ORL P1,#11111111B ANLP1,A ;判断P1.4对应列是否有键按下MOVWhichCol,A MOVA,P1 MOVInputedKey,A;存储输入键值 ORL A ,#11110000B CPL A;若P1.4对应列有键按下,则a0 JZScanNextRow; P1.4列没有键按下,继续下一列 LJMPKeycode ScanNextRow:MOV A,WhichCol RLA MOVWhichCol,A ;逐列置低电平 DJNZScanTimes,ScanLoop CLR KeyPressed;四列循环完毕后认为没有键按下 LJMPJugeKeyOver按键键值按键键值S17ES97BS2BES10BBS3DES11DBS4EES12EBS57DS1377S6BDS14B7S7DDS15D7S8EDS16E7Keycode:MOVA,InputedKey CJNEA,#7EH,Not01 MOV InputedKey,#01H LJMPJugeKeyOver Not01:CJNEA,#0BEH,Not02 MOV InputedKey,#02H LJMPJugeKeyOver Not02:CJNEA,#0DEH,Not03 MOV InputedKey,#03H LJMPJugeKeyOver Not03:CJNE A,#0EEH,NotOrder SETBOrderKeyPressed LJMPJugeKeyOver NotOrder:CJNEA,#7DH,Not04 MOV InputedKey,#04H LJMPJugeKeyOver Not04:CJNEA,#0BDH,Not05 MOV InputedKey,#05H LJMPJugeKeyOverNot05:CJNEA,#0DDH,Not06 MOV InputedKey,#06H LJMPJugeKeyOver Not06:CJNEA,#0EDH,NotFun SETBFunKeyPressed LJMPJugeKeyOver NotFun:CJNEA,#7BH,Not07 MOV InputedKey,#07H LJMPJugeKeyOver Not07:CJNEA,#0BBH,Not08 MOV InputedKey,#08H LJMPJugeKeyOver Not08:CJNEA,#0DBH,Not09 MOV InputedKey,#09H LJMPJugeKeyOver Not09:CJNE A,#0EBH,NotEnter SETBEnterKeyPressed JMPJugeKeyOverNotEnter:CJNEA,#77H,Not00 MOV InputedKey,#00H LJMPJugeKeyOver Not00:CJNEA,#0B7H,NotUp SETBUpKeypressed LJMPJugeKeyOver NotUp:CJNEA,#0D7H,NotDown SETBDownKeyPressed LJMPJugeKeyOver NotDown:CJNEA,#0E7H,InputFail SETBExitKeyPressed LJMPJugeKeyOver InputFail: SETBKeyFail ;InputedKey值有错误,设出错标志 LJMPJugeKeyOver JugeKeyOver:RET二、显示器例 若硬件连接图如上所示,要显示数据的BCD码存 放在30H37H存储单元中,试给出循环显示30H 37H单元数据的程序。解:显示程序如下: DatatempEQU39H;显示数据的BCD码 AddrtempEQU3AH;显示数据的位数 ORG0000H LJMPMAIN ORG0030H MAIN: MOVR0,#30H ;将数据首地址赋给R0 MOVR2,#07H ;显示的位数存放在R2中 MOVAddrtemp,#00H;选中最后一位LED Dis:MOVA,R0;取出显示数据的BCD码 MOVDatatemp,A LCALLDisplay LCALLDelay INC Addrtemp ;选择下一个LED INC R0 DJNZR2,Dis LJMPMAINDisplay:MOVA,Datatemp ANL A,#0FH SWAPA CLR C ADD A,Addrtemp SWAPA MOVP1,A RET延时程序子程序:DELAY:MOVR6,#04H DL_3MS_0: MOVR7,#0F9H DL_3MS_1: NOP DJNZR7,DL_3MS_1 DJNZR6,DL_3MS_0 RET三、数模转换IN0IN7:8路模拟量输入端。 D0D7:8位数字量输出端。 START:启动输入控制端口。 ALE:地址锁存控制信号端口。 EOC:转换结束信号,高电平表示转换结束 CLOCK:时钟信号输入端。 OE:输出允许控制信号,高电平有效。 A、B、C:转换通道地址选择。 Vref+:参考电压的正端。 Vref-:参考电压的负端。 VCC:电源的正极。ORG0000H AJMPSTART ORG 0013H;开外部中断1 AJMPINT1 ORG 0030H START: SETBEA;CPU开中断 SETBEX1;外部中断1开中断 SETBDPTR,#0F000H;选择通道0 MOV A,#00H MOVXDPTR,A;启动A/D转换 SJMP$ ;-中断服务子程序- INT1:MOVXA,DPTR ;产生读信号来读取结果存放在A中 RETI;中断返回
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号