单片机第一次作业
时间:11-25
来源:互联网
点击:
作业:把片内RAM的30H处的值(是压缩BCD码)展开为非压缩BCD码放41H,42H处。(高位放41H处)
,此题不是太难,所以就选了这道啦!具体步骤,请大家看好啦!
1、先fileànew 建asm文件5.asm。
MOV A,30H
ANL A,#0FH
MOV 42H,A
MOV A,30H
SWAP A
ANL A,#0FH
MOV 41H,A
END
为了调试时看数据,预先在30H中赋值为56H,所以程序前加:
MOV 30H,#56H
为了在最后不至于出现不想看到的框,可以在END前加两三个NOP指令,程序变为:
MOV 30H,#56H
MOV A,30H
ANL A,#0FH
MOV 42H,A
MOV A,30H
SWAP A
ANL A,#0FH
MOV 41H,A
NOP
NOP;因为NOP是仅耗时但什么也不做的空指令,对本程序无影响,也可以不写。
NOP
END
2、建新工程,Projectànew project ,选AtemlàAT89C51 ,导入文件5.asm。
注意,对初学者,一个工程里只能有本程序5.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。
,前面的出了程序基本照抄老师的,图省事嘛!
3、可见程序:
4、进行编译、连接。编译通过后,点debug下的start/stop开始调试, step 和step over都是单步调试,step是遇到子程序或中断也要进入进行单步调试,step over是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。,准备工作已经做好,下面就开始执行喽!我们执行一句得到:
点view àmemory windows,再输入D:30h回车,得到:
可见D:30H处变为56H.
把30H中的值赋给了A,所以A中的值变为56H,再执行一步,可见:
把A中的值与0FH进行逻辑“与”,A中的值高四位被屏蔽,所以A中的值变为06H,再执行一步,可见:
,到此就快找到30H中的值的低位啦!别急,输入D:42h回车,得到:
可见d:42h处变为06h.哈哈,找到啦!再执行一步可得:
可见A中的值又变为56H.接下来该怎么办呢?再执行一步可得:
可见A中的值变为65H.这一步把A中的值高低位互换,为的是找到高位并放到42H中。当然还有其他办法,具体的自己慢慢想吧,哈哈,(提示一下,直接把A与F0H逻辑“与”,也是可以滴。)。再执行一步可得:
可见A中的值变为05H.原因已经说过啦!再执行一步可得:
,这就要找到高位啦!输入D:41h回车,得到:
可见d:41h处中的值变为05H.,找到了吧?!!
综上:就把片内RAM的30H处的值展开为了非压缩BCD码放41H,42H处,并且高位放在了41H处。
为了调试时看数据,预先在30H中赋值为56H,所以程序前加:
为了在最后不至于出现不想看到的框,可以在END前加两三个NOP指令,程序变为:
2、建新工程,Projectànew
3、可见程序:
4、进行编译、连接。编译通过后,点debug下的start/stop开始调试,
点view
可见D:30H处变为56H.
把30H中的值赋给了A,所以A中的值变为56H,再执行一步,可见:
把A中的值与0FH进行逻辑“与”,A中的值高四位被屏蔽,所以A中的值变为06H,再执行一步,可见:
,到此就快找到30H中的值的低位啦!别急,输入D:42h回车,得到:
可见d:42h处变为06h.哈哈,找到啦!再执行一步可得:
可见A中的值又变为56H.接下来该怎么办呢?再执行一步可得:
可见A中的值变为65H.这一步把A中的值高低位互换,为的是找到高位并放到42H中。当然还有其他办法,具体的自己慢慢想吧,哈哈,(提示一下,直接把A与F0H逻辑“与”,也是可以滴。)。再执行一步可得:
可见A中的值变为05H.原因已经说过啦!再执行一步可得:
,这就要找到高位啦!输入D:41h回车,得到:
可见d:41h处中的值变为05H.,找到了吧?!!
综上:就把片内RAM的30H处的值展开为了非压缩BCD码放41H,42H处,并且高位放在了41H处。
单片机压缩BCD 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)