扫描法程序.docx
- 文档编号:27223371
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:17
- 大小:43.40KB
扫描法程序.docx
《扫描法程序.docx》由会员分享,可在线阅读,更多相关《扫描法程序.docx(17页珍藏版)》请在冰豆网上搜索。
扫描法程序
题目一:
根据电路图所示的10接线、编程,应用反转法进行按键识别,并对按键编码显示
0-F,无按键的时候显示全灭,并绘制程序流程图。
ORG0000H
AJMPMAIN
ORG0030H
;41H:
键值
;42H:
被按键的数量
;43H:
待转换键列值
;44H:
待转换键行值
MAIN:
MOVSP,#60H
READKEY:
MOV41H,#10H
MOV42H,#00H
ACALLKEY_ON
;调用判断是否有键按下程序
JZTO_DISPLAY
ACALLDELAY
ACALLKEY_P
;累加器为零,没有键按下,直接显示全灭;调用延时程序
;调用反转法按键处理程序
ACALLKEY_CODE
TO_DISPLAY:
ACALLDISPLAY
AJMPREADKEY
;调用按键键值处理程序
;调用显示程序
;返回读键状态
MOVP3,#0FH
MOVA,P3ANLA,#0FHMOV43H,A
MOVP3,#0F0HMOVA,P3ANLA,#0F0HSWAPAMOV44H,ARETDISPLAY:
MOVA,41H
MOVDPTR,#DBB
MOVCA,@A+DPTRMOVP2,ARET
MOVR2,43HACALLVALUE_C
MOV43H,R4
MOVR2,44H
ACALLVALUE_C
MOV44H,R4
MOVA,43H
JZRETURN1
DECA
MOVB,#04H
MULAB
MOV43H,A
MOVA,44H
JZRETURN1
DECA
ADDA,43H
MOVR2,A
MOVA,#0FH
SUBBA,R2
MOV41H,A
RET
;真实键值保存
KEY_P:
;返回43H:
待转换键列值;反转法按键处理程序
;返回44H:
待转换键行值
;低四位输入,高四位输出
;读按键接口
;保留低四位
;保存到键列值
;高四位输入,低四位输出
;读按键接口
;保留高四位;高低四位互换
;保存到转换键行值
;显示程序
;取键值
;DPTR指向段码区;查找段码;送显示接口
KEY_CODE:
;返回值41H:
键值;按键键值处理程序
;取待转换键列值
;调用按键译码程序
;保留转换结果
;取待转换键行值
;调用按键译码程序
;保留转换结果
;查看转换结果
;如果为零,没有键按下或多个键按下
;如果有键按下列值减一
;
;列乂4
;保存数据
;取待转换键行值
;如果为零,没有键按下或多个键按下
;如果有键按下行值减一
;计算键值
;16减键值
RETURN1:
MOV41H,#10H
RET
;没有按键显示全灭
DELAY:
;内层循环
;判断内循环终止
;判断外循环终止
;判断是否有键按下程序;低四位输入,高四位输出;读按键接口
;保留低四位;判断是否有键按下;无按键按下清零累加器A
;有键按下,累加器A不为零
;按键译码程序
;输入按键的行列值
;补齐八位
;循环次数
;比较值
;保存比较值
;判断行列值与比较值是否相同
;相同则退出子程序
;保存数据
;
;左移比较值,为下一次比较做准备;保存比较值
;还原累加器内容
;判断循环次数
DELAY1:
MOVR6,#0FFH
DELAY2:
NOP
NOP
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
;返回值A,A=0:
无键按下
;A!
=0:
有键按下
KEY_ON:
MOVP3,#0FH
MOVA,P3
ANLA,#0FH
CJNEA,#0FH,KEY_H
CLRA
RET
KEY_H:
MOVA,#0FFH
RET
VALUE_C:
;入口地址R2
;出口地址R4
MOVA,R2
ORLA,#0F0H
MOVR4,#4
MOVR5,#0FEH
SS:
MOV30H,R5
CJNEA,30H,SS1
AJMPRETURN0
SS1:
MOVR2,A
MOVA,R5
RLA
MOVR5,A
MOVA,R2
DJNZR4,SS
RETURN0:
RET
DBB:
DB0C0H,0F9H,0A4H,0B0H,99H;段码
DB92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH
END
题目二:
根据电路图所示的IO接线、编程,完成动态数码显示秒表程序设计。
两位分钟显示,两位秒显示,并绘制程序流程图。
ORG0000H
AJMPMAIN
ORG000BH
AJMPITOP
ORG0100H
;显示单元42H、43H、44H、45H
;秒存储单元(压缩BCD码)40H
;分存储单元(压缩BCD码)41H
;数据更新标志位F0
MAIN:
MOVSP,#60H
MOVTMOD,#01H;T0为方式1,
MOV30H,#20;中断次数
CLRA
CLRF0;数据更新标志位
MOVR0,#40H;存储单元清零
MOVR2,#06H;循环次数
CLEAR:
MOV@R0,A
INCR0
DJNZR2,CLEAR
SETBET0;允许T0中断
SETBEA;开全局中断
MOVTH0,#3CH;T0初值
MOVTL0,#0B0H
SETBTR0启动T0
CIRCLE:
JBF0,DISPLAY;F0为数据更新标志位,是否有数据更新
SETBF0
;数据转换
MOVA,40H;
取秒存储单元(压缩BCD码)40H
ANLA,#0FH
;保留低四位压缩BCD码
MOV42H,A
;送显示单元
MOVA,40H
;取秒存储单元(压缩BCD码)40H
ANLA,#0F0H
;保留高四位压缩BCD码
SWAPA
;高低互换
MOV43H,A
;送显示单元
MOVA,41H
;取分存储单元(压缩BCD码)41H
ANLA,#0FH
;保留低四位压缩BCD码
MOV44H,A
;送显示单元
MOVA,41H
;取分存储单元(压缩BCD码)41H
ANLA,#0F0H
;保留高四位压缩BCD码
SWAPA
;高低互换
MOV45H,A
;送显示单元
DISPLAY:
MOVR3,#0FEH
;显示子程序,显示片选初值
MOVP2,#0FH
;关显示
MOVDPTR,#DBB
;DPTR指向段码
MOVR2,#04H
;循环次数
MOVR0,#42H
;设置显示地址,指向显示单元
DIS1:
MOVA,@R0
;取显示单元的偏移量,及转换后的缩
BCD码
MOVCA,@A+DPTR
;查表,根据偏移量取回段码
MOVP1,A
;送显示段码到显示接口
MOVP2,R3
;设置显示数码管的片选
MOVA,R3
;处理显示片选初值
RLA
;循环左移一位
MOVR3,A
;保存处理显示片选值
MOVR7,#01H
;延时程序,设置外层循环
DELAY1:
MOVR6,#0FH
;设置内层循环
DELAY2:
NOP
NOP
DJNZR6,DELAY2
DJNZR7,DELAY1
INCR0
MOVP2,#0FH
DJNZR2,DIS1
AJMPCIRCLE
IT0P:
PUSHACC
MOVTH0,#3CH
;判断内层循环次数
;判断外层循环次数
;显示地址加一
;关显示
保护现场
;T0初值
MOVTL0,#0B0H
DJNZ30H,RETURN
CLRF0
MOV30H,#20
;是否到达一秒
;数据更新
MOVA,#01H
ADDA,40H
DAA
MOV40H,A
CJNEA,#60H,RETURN
MOV40H,#00H
MOVA,#01H
ADDA,41H;
DAA
MOV41H,A
CJNEA,#60H,RETURN
MOV41H,#00H
;重新设置中断次数
;“秒”单元加一
;秒单元十进制调整
;秒单元存储
;是否到60秒,未到返回
;满60秒单元清零
;分单元加一
;分单元十进制调整
;存储分单元
;是否到60分,未到返回
;满60分单元清零
RETURN:
POPACC
RETI
;恢复现场
;中断返回
;段码
DBB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END
题目三:
根据电路图所示的IO接线、编程,应用扫描法进行按键识别,并对按键编码显示0-F,无按键的时候显示全灭,并绘制程序流程图。
按键值初始化,送全灭偏移量设置按键被按下的个数
;调用判断是否有键按下程序;累加器为零则直接去显示程序;有键按下调用延时程序
;调用按键处理程序,返回按键被按下的个数
;按键被按下的个数超过一个,认为非法直接去显示程序
;调用键值处理程序
;调用显示程序
;返回初始化状态
;按键处理程序,返回R2:
被按键个数(扫描法);
;设置扫描初值
;设置循环扫描次数
AJMPREADKEY
KEYP:
MOVR5,#7FH
MOVR4,#04H
ORG0000H
AJMPMAIN
ORG0030H
;41H:
键值
;42H:
被按键的数量
;43H:
待转换键列值
;44H:
待转换键行值
MANMOVSP,#60H
READKEY:
MOV41H,#10H
MOV42H,#00H
ACALLKEYON
JZTO_DISPLAY
ACALLDELAY
ACALLKEY_P
CJNER2,#01H,TO_DISPLAY
ACALLKEY_CODE
TO_DISPLAY:
ACALLDISPLAY
MOVR2,#00H
KEY0:
MOVP3,R5
MOVA,R5
RRA
MOVR5,A
MOVA,P3
ANLA,#0FH
CJNEA,#0EH,KEY1
MOV43H,#00H
AJMPKEY5
KEY1:
CJNEA,#0DH,KEY2
MOV43H,#01H
AJMPKEY5
KEY2:
CJNEA,#0BH,KEY3
MOV43H,#02H
AJMPKEY5
KEY3:
CJNEA,#07H,KEY4
MOV43H,#03HKEY5:
INCR2
MOV44H,R4KEY4:
DJNZR4,KEY0
RET
KEY_CODE:
MOVA,43H
MOVB,#04H
MULAB
DEC44H
ADDA,44H
MOV41H,A
RET
DISPLAY:
MOVA,41H
MOVDPTR,#DBB
MOVCA,@A+DPTR
MOVP2,A
RET
DELAY:
MOVR7,#0FHDELAY1:
MOVR6,#0FFHDELAY2:
NOP
NOP
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
;被按按键个数初始化
;扫描值送键盘接口
;处理扫描值,为下一次准备右移扫描值
;保持扫描值
;读键盘状态
;保留低四位
;比较按键行值,不相同则进行下一次比较;保存行值
;进行下一次扫描,判断是否有多个按键;比较按键行值,不相同则进行下一次比较;保存行值
;进行下一次扫描,判断是否有多个按键;比较按键行值,不相同则进行下一次比较;保存行值
;进行下一次扫描,判断是否有多个按键;比较按键行值,不相同则进行下一次比较;保存行值
;有键按下,被按按键个数加一
;保存列值
;判断循环次数,终止循环
;键值处理程序,返回值41H:
键值;
;取按键行值
;
;行值x4
;列值减一
;行值X4+列值减一,得实际的键值
;保存键值
;显示程序;
;取键值,
;DPTR指向段码区
;查找段码
;送显示接口
;延时程序
;外层循环
;内层循环
;
;判断内循环终止
;判断外循环终止
;判断是否有键按下程序
;设置低四位输入,高四位输出
;读按键接口
;保留低四位
CLRA
;无按键按下清零累加器A
;判断是否有键按下
RET
KEY_H:
MOVA,#0FFH
;;有键按下,累加器A不为零
;返回值A,A=0:
无键按下;A!
=0:
有键按下KEY_ON:
MOVP3,#0FH
MOVA,P3
ANLA,#0FH
CJNEA,#0FH,KEY_H
RET
DBB:
DB0C0H,0F9H,0A4H,0B0H,99H;段码
DB92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扫描 程序