c语言sscanf函数的用法是什么
228
2022-11-27
DA和AD综合实验
实验目的
2、进一步了解键盘管理设计和仪表总体设计。
实验内容:
设计要求:1、显示格式如图8-1示,最左二位显示D/A的数字输入(00~FFH),最右二位显示A/D的数字输出(00~FFH)。
3、D/A的数字输入可通过键盘输入,为输入16进制,键盘布置如图8-2规定:
单键输入:按键号0~9的数字键时,输出键值为0~9H。
双键输入:先按下键号为B的键,再按0~5号数字键,则输出键值为A~F。
D/A输入 A/D输出
图8-1 显示格式 图8-2 键盘布置
根据实验内容要求,列出主程序流程图,见图8-3,其中,键盘输入部分编为子程序,流程图如图8-4。
ORG 0000H | |||
LJMP MAIN | |||
ORG 0700H | |||
MAIN: | MOV SP, #60H | ;设置堆栈 | |
MOV DPTR, #0B000H | ;8155初始化 | ||
MOV A, #03H | ;A、B口输出,C口输入 | ||
MOV X @DPTR, A | |||
MOV A, #13H | ;初始显示全灭 | ||
MOV R0, 2AH | |||
MP0: | MOV @R0, A | ||
INC R0 | |||
CJNE R0, #30H, MP0 | |||
D25: | LCALL DISP | ;调用显示 | |
LCALL KS1 | ;有无键按下? | ||
JZ MP1 | ;无键按下,转 | ||
LCALL KEYP | ;有键按下,调KEYP | ||
MP1: | MOV A, 2AH | ;(2A)(2B)输入至0832 | |
SWAP A | |||
ADD A, 2BH | |||
| MOV DPTR, #C000H | 指向0832 | |
MOVX @ DPTR, A | |||
NOP | |||
MOV DPTR, #5000H | ;启动A/D通道0 | ||
MOV X @DPTR, A | |||
MOV R2, #20H | ;延时 | ||
DL: | DJNZ R2, DL | ||
WEND: | JB P3.3, WEND | ;等待A/D完成 | |
MOVX A, @DPTR | ;A/D输出 | ||
PUSH A | ;送2E、2F | ||
ANL A, #0F0H | |||
SWAP A | |||
MOV 2EH, A
ANL A,#0FH MOV 2FH,A | |||
LJMP DIS | |||
ORG 0740H | |||
KEYP: | LCALL KEYA | ;键号→A | |
CJNE A, #0BH, KC1 | ;不是键号B,转 | ||
SETB 00H | ;是键号B,设置标志 | ||
RET | |||
KC1: | JB 00H, KC3 | ;已按过B键,转 | |
CJNE A, #0A, KC2 | ;属单键输入 | ||
KC2: | JNC KC6 | ;若键号≥0A,转退出 | |
SJMP KC5 | ;单键输入0~9 | ||
KC3: | CJNE A, #06, KC4 | ; | |
KC4: | JNC KC6 | ;双键输入时,键号≥6,则退出 | |
ADD A, #0AH | ;双键输入时键值修正 | ||
KC5: | CPL 01H | ;按键顺序标志位求反 | |
JNB 01H, KC7 | |||
| MOV 2AH, A | ;键值送显示缓冲2AH | |
KC6: | RET | ||
KC7: | MOV 2BH, A | ;下一次按键的键值送2BH | |
| RET |
实验要求:
读通程序后输入。可以先连续运行程序,检查运行是否正常。如果不正常,则单步或断点调试。
思考题:
1、用键盘给D/A输入16进制数00~FFH,在程序中如何区分按键属于第一位16进制数还是第二位16进制数?
2、D/A的输入显示和A/D的输出显示之间,为什么有误差?试分析原因。
3、A/D采样改用中断法编程,读改写程序。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~