安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
本例是为了进一步熟悉PC上的编程方法。任何源程序应先在.org文件窗口中编辑好,再在.asm文件窗口中用指令表产生地址和机器代码。而不要直接在.asm文件窗口中输入。
1.【例1-4】 指示灯D0闪烁,间隔为0.5s。
(1)编程
进入“学习平台”,在.org文件窗口中,输入源程序如下:
将上述程序输入到.org文件窗口中。
(2)汇编
将助记符指令组成的程序,编辑为机器代码程序。
在窗口左侧的指令表中,逐一选择对应指令,按系统提示操作。在.asm文件窗口中得到汇编结果:
在程序末尾,单击指令end,加入伪指令代码“:1d *”。
将标号地址X1改为绝对地址00。
(3)软仿真
在主菜单中单击“调试”按钮将弹出对话框,若已保存源文件,单击“是”,弹出调试窗口。
单击“复位”按钮,显示“-1”,表明仿真开始。
单击“单步”按钮,执行第1条语句,端口00输出到c。由于端口00复位后为1,所以c=1。
单击“单步”按钮,执行第2条语句,c取反,c=0。
单击“单步”按钮,执行第3条语句,端口00输出,端口00=0。端口00变为绿色。
单击“单步”按钮,执行第4条语句,由于是延时,略过。
单击“单步”按钮,执行第5条语句,程序转移到起点,继续循环。
单击“跟踪”按钮,程序连续单步执行,可观察到端口00循环置0再置1再置0……也就是闪烁。因是纯软件执行,对延时不做计算。
通过软仿真,可以确定程序逻辑正确。
(4)下载到实验机执行
按之前介绍的方法将此程序下载到实验机执行,应观察到同样效果。
(5)存储程序
在主菜单中单击“文件→另存为→asm”,在当前文件夹输入demo_2.asm,单击“保存”按钮,将文件保存到PC。
2.【例1-5】 指示灯D0、D1、D2循环闪烁,间隔为0.5s。
(1)编程
进入“学习平台”,在.org文件窗口中,输入源程序如下:
将上述程序输入到.org文件窗口中。
(2)汇编
在PC左侧指令表中选(14)SUBX n并双击,弹出对话框,输入标号地址X1,然后单击“确定”按钮,在.asm文件窗口显示语句。
在PC左侧指令表中选(14)SUBX n并双击,弹出对话框,输入标号地址X2,然后单击“确定”按钮,在.asm文件窗口显示语句。
在PC左侧指令表中选(14)SUBX n并双击,弹出对话框,输入标号地址X3,然后单击“确定”按钮,在.asm文件窗口显示语句。
在PC左侧指令表中选(17)JMP n并双击,弹出对话框,输入标号地址X4,然后单击“确定”按钮,在.asm文件窗口显示语句。
一般子程序地址距离主程序较远,这里设为20。
在PC左侧指令表中选中(29)ORG n并双击,弹出对话框,输入绝对地址20。
单击“确定”按钮后,在.asm文件窗口显示语句:“20:1C *”,表示新的起始地址是20。同样操作继续选其他4条指令,生成机器码。子程序的结束要用RETX指令结束。
确定第2个子程序的起始地址为30。
在PC左侧指令表中选(29)ORG n并双击,弹出对话框,输入绝对地址30。
单击“确定”按钮,在.asm文件窗口显示语句:“30:1C *”,表示新的起始地址是30。继续选其他4条指令,生成机器码。子程序的结束要用RETX指令结束。
确定第3个子程序的起始地址为40。
单击“确定”按钮,在.asm文件窗口显示语句:“40:1C *”,表示新的起始地址是40。继续选其他4条指令,生成机器码。子程序的结束要用RETX指令做结束。
在第3个子程序结束后,选用END做整个程序结束。
在通过汇编生成机器代码后,还要将标号地址X1、X2、X3、X4改为绝对地址,X1是20、X2是30、X3是40、X4是00。
至此,汇编完成。
(3)软仿真
在主菜单中单击“调试”按钮将弹出对话框,若已保存源文件,单击“是”,弹出调试窗口。
单击“复位”按钮显示-1,仿真开始。
单击“单步”按钮,执行第1个子程序,端口00置0。(www.chuimin.cn)
单击“单步”按钮,执行第2个子程序,端口01置0。
单击“单步”按钮,执行第3个子程序,端口02置0。
单击“单步”按钮,执行跳转指令到地址00,循环进行。
单击“跟踪”按钮,观察到端口00~02循环置0,置1。也就是灯的循环闪烁。
(4)下载到实验机执行
按上节的方法将此程序下载到实验机执行,应观察到同样效果。
(5)存储程序
在主菜单中单击“文件→另存为→asm”,在当前文件夹输入demo_ 3.asm,单击“保存”按钮,将文件保存到PC。
3.【例1-6】 3键抢答器
所谓抢答器,就是判断比赛中谁先按下按键的机器。由于计算机程序运行速度要比人操作按键快得多,所以无论3个人如何抢按键,结果只能有一只键显示按下。3个按键的编号是08(+1键),09(-1键),0a(H键)。
(1)编程
在.org文件窗口内,输入下列程序:
单击“文件→另存为→.org文件”,保存.org文件为demo_ 2.org。
(2)汇编
在.asm文件窗口内按.org文件选择指令,逐条汇编生成机器码。
下面的指令应当转移到一个新地址,这主要是为了使程序更清晰。方法是选中指令ORG n,并双击,在弹出的对话框中输入新实际地址10,单击“确定”按钮,生成新的起始地址。
继续按.org文件选择指令,逐条汇编生成机器码。在第2段起始改变起始地址为20。程序结束要加指令END。
下面还必须将标号地址X1,X2,X3,X4改为绝对地址,即X1=10,X2=20,X3=28,X4=00。
至此,源程序汇编结束,保存文件demo_ 4.asm。
(3)下载到目标板,并运行
下载程序机器码检验正确后,进入执行状态,显示-1。当按+1键时,灯D0点亮,同时蜂鸣器响。按-1键,灯D1点亮,同时蜂鸣器响。按H键,灯D2点亮,同时蜂鸣器响。可以3人共同进行抢答验证。
4.【例1-7】 在数码管上显示“LL”
(1)说明
输出口0D就是U3(74HC164)的数据输入口,输出口0E就是U3(74HC164)的移位脉冲输入口。由于电路板的限制,这两个端口只能做输出使用。利用0D、0E输出可以控制74HC164显示任意字形,包括文字和数字,例如“P”、“L”、“0”、“8”等。
(2)74HC164真值表
首先应了解移位寄存器74HC164的真值表,也就是它的动作时序。引脚图和真值表如图1-14所示。
图1-14 74HC164引脚图和真值表
当74HC164的1、2引脚输入为1或0状态时,在CLOCK时钟端输入一个上升沿脉冲,输入状态即移位到QA。当下一个上升沿脉冲时,继续移位。按照真值表就可以将任意2个数据字节移位到2个74HC164显示字符。
(3)编程
在.org文件窗口内输入下列程序:
当d-1=03-1不为0时,则转X1执行,移位11100011。第2次执行,移位11100011。对于共阳极数码管,当引脚为1时,对应段灭;当引脚为0时,对应段亮。11100011相应于a、b、c、d、e、f、g、h各段,即字符“LL”。
单击“文件→另存为→org文件”,保存.org文件为demo_ 5.org。
(4)汇编
在.asm文件窗口内按org文件选择指令,逐条汇编生成机器码。
将文件中的标号地址改为绝对地址。
至此,汇编结束,保存文件demo_ 5.asm。
(5)下载到目标板
执行后,数码管显示器显示“LL”。若在实验机上直接输入机器代码,则应取消所有伪指令。
有关零起点学习单片机多语言编程的文章
安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
为此,出现了用代表指令意义的助记符表示指令。后面的字节称为“操作数”,表示端口的编号是00。将助记符表示的程序变换为包括地址和机器码在内的可执行程序的过程,称为“汇编”。对“宏”助记符指令进行的“汇编”,称为“简易汇编”。利用“宏”作为学习8051汇编语言和C语言的入门阶梯,对初学者是较好的一种选择。......
2023-11-07
一种良好的程序设计规则和方法是结构化程序设计。结构化程序设计的基本思想是基于这样的考虑,即任何程序都可以用三种基本结构的组合来实现。这三种基本结构为顺序结构、分支结构和循环结构。在本章的程序讲解和编程练习中较多地使用了“延时程序”子程序,其程序结构常用的有单循环和双循环。由于前文所介绍的程序并没有对“延时程序”子程序延时时间的计算进行讲解,因此,在此结合程序的循环结构讲解延时程序的延时时间计算。......
2023-11-07
调试的目的是发现程序的错误。主要是观察工作寄存器、片内RAM单元、SFR及转移的地址位置是否正确,软仿真调试窗口如图3-8所示。2)单击调试菜单上的“外围设备→I/O→Port→Port 1”,I/O接口图标显示P1口状态。经过指令“CPL P1.0”,I/O接口图标显示P1口状态可看到P1.0=0。图3-8软仿真调试窗口4)在调试菜单中单击“单步”按钮,再一下下按动键盘上的“F10”键,程序则一条条执行。......
2023-11-07
第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。......
2023-11-07
if-else条件分支语句是选择结构的一种形式,是最常用的语句之一。这意味着如果if后面的表达式成立(不为0),则执行if下面的语句,否则直接向下执行。......
2023-11-07
将一个二进制数转换成十进制数表示,只需按权展开做一次10进制运算即可以完成。将一个十进制数转换成二进制数表示,是数据转换中较复杂的工作。做乘、除运算时,其法则与十进制数也是相同的。它不同于数值运算。二进制数可以进行按位的逻辑运算,每位之间相互独立,位与位之间不存在进位和借位的关系。......
2023-11-07
相关推荐