安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
1.【例3-36】 数码管显示“25”源程序
8段数码管的各段排列对应8位二进制数是“p、g、f、e、d、c、b、a”。哪段亮哪段为“0”,不亮的段是“1”。两个数码管中高一位显示“2”,低一位显示“5”,所对应的8位二进制码与十六进制分别是10100100B=0A4H、10010010B=92H。两个数据分别保存在单片机芯片内部ARM用户储存单元30H、31H中。规定在程序中当遇到两位十六进制数据最高位是字母时前面要加“0”,如A4H应写为0A4H。
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上的两个数码管显示器静态显示“25”。
程序点评:P3.4输出一个时钟周期,P3.3输出移位数据。在8个时钟周期内P3.3通过累加器A左移8位显示“5”的字符,再在8个时钟周期内显示“2”的字符。
说明:若是应用复制粘贴的方法将该程序粘贴在Keil μ Vision2编译软件中使用时,要将Word文档下的分号改变成英文文档下的分号。编译中注释部分要变成绿色,指令变成蓝色。另外,还要注意语句中不能随便加空格,特别要区分字母“O”与数字“0”的书写。
2.指令学习
(1)位定义BIT指令
该指令的功能是将某位的地址定义给某字符名称。
位定义格式:“<字符名称>BIT<位地址>”。其中,<位地址>可以是绝对地址,也可以是符号地址(即符号名称)。举例:
(2)“RLC A”带进位循环左移指令
该指令的功能是将PC指针从累加器A中的最低位左移至下一位即An→An+1,并且使进位标志位CY→A0、A7→CY。
【例3-37】 两个数码管显示“a段”源程序
8段数码管的各段排列对应8位二进制数是“p、g、f、e、d、c、b、a”。由于在程序中高、低两个数码管位显示字形“a段”,所以对应8位二进制数是11111110B=FEH(十六进制数)。在程序中规定,当遇到两位十六进制数最高位是字母时前面要加“0”,如FEH→0FEH。
“RLC A”带进位循环左移指令每隔一个机器周期PC指针左移一位,a→b→c→d→e→f→g→P例中,0FEH=11111110B在第一个机器周期显示二进制中“0”对应的“a段”(亮),每隔一个机器周期PC指针左移一位分别显示“1”所对应的p、g、f、e、d、c、b段(不亮)。左移进位后,显示高一位数据。进位后回到显示第一位数据,即循环显示。
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上的两个数码管显示器静态显示“--”,即“a段”亮。
程序点评:程序中高、低两个数码管位赋值为0FEH,则显示字形“a段”。
【例3-38】 流水灯源程序
编译时注意左右位移指令助记符后仅留一个空格,标点符号是在英文输入法下的。
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上P1口的8个灯循环往返亮灭。
程序点评:程序中两次初始化赋值决定8个灯循环往返亮灭的起点与顺序。“RL A”左移1位指令不带进位。
(3)“INC”加1指令(www.chuimin.cn)
在MCS51系列单片机中共有5条加1指令分别是
在【例3-36】数码管显示“25”源程序和两个数码管显示“a段”源程序中应用了INC @Ri间接寻址寄存器@Ri加1赋值,即使Ri←(Ri)+1。两段程序中30H=92H,和30H=0FEH分别赋值给间接寻址寄存器@Ri。“INC @Ri”操作后间接寻址寄存器@Ri中的地址为31H,数据分别是31H=0C0H,31H=0FEH。
其他“INC”加1指令将在后续的实例中应用,在此不再举实例练习。
(4)I/O接口位(口线)输出指令
程序中“MOV DIN,C”指令等同于“MOV P3.3,C”
3.数码管数据的静态显示
对于数据在数码管静态显示的编程应用中,数据是按十进制0~9或十六进制0~F进行运算的,将数码管数据显示制作为一套子程序或一个程序模块,使用起来非常方便。我们将例3-36数码管显示“25”源程序和两个数码管显示“a”段源程序的可以作为显示数据和显示数码管某段的程序模块。使用时仅仅将单片机芯片内部ARM用户存储单元30H,31H中的数据或数码管某段数据修改即可。
数码管数据的静态显示还可以通过查表实现。同样也可以将这种方法作为数码管数据显示制作为一套子程序或为一个程序模块。
数码管数据的静态显示查表法在送数据显示的子程序前,还必须经过分离、字形码转换后才能送显示。
【例3-39】 数码管显示“25”源程序
设20H为数据缓冲区。在单片机芯片内部ARM用户储存单元20H分为低4位和高4位。30H为低4位字形码缓冲区,31H位高4位字形码缓冲区。由于数码管显示“25”,则20H=#25H。程序如下:
例3-39中第1部分是主程序MAIN,先将某一数据“25”送数据缓冲区20H,因为MCS51系列MCU的片内RAM区用户能自由支配的只有20H~7FH,先选20H为数据区,30H和31H为显示区。主程序由3个子程序组成,BEFORE数据分离处理子程序是显示前处理,它的任务是将20H数据内容分离为低位和高位,再用“SWAPA”指令将A中高低4位互换,使30H存放“2”,31H存放“5”,为转换字形码准备条件。FORM为字形码转换,它的任务是通过查表在2个码子区获取“2”和“5”为对应字形码。DISP是数码管显示,它的任务是将2个字形码送74HC164数码管显示。
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上的两个数码管显示器静态显示“25”。
程序点评:程序与例3-36效果一样,但程序方案不同。
同理,可以在20H内设置0~9任意数据,观察数码管数据的静态显示。
【例3-40】 通过查表使两个数码管显示“a段”源程序
8段数码管的各段排列对应8位二进制数是p、g、f、e、d、c、b、a。字形a段,所对应8位二进制数是11111110B=FEH(十六进制数);字形b段所对应8位二进制数是11111101B=FDH(十六进制数);字形c段所对应8位二进制数是11111011B=FBH(十六进制数);字形d段所对应8位二进制数是11110111B=F7H;字形e段所对应8位二进制数是11101111B=EFH;字形f段所对应8位二进制数是11111111B=DFH;字形g段所对应8位二进制数是10111111B=BFH;字形p段,所对应的8位二进制数是01111111B=7FH。
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。安装在单片机上的两个数码管静态显示“--”,即a段亮。
程序点评:程序中的高、低两个数码管显示字形a段是通过查字形码表实现的。
有关零起点学习单片机多语言编程的文章
安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
如观察“4”是如何显示出来的,首先点亮数码管b、c、f、g段,对应到单片机的I/O口,将P0.1、P0.2、P0.5和P0.6端口置“0”,公共端com1~com4置“1”,实现集成4位数码管全部显示“4”。表9-1列出显示“4”数字段码对应关系。程序设计上通过循环结构实现“2”“4”“6”“8”数字的轮询显示。数码管静态显示程序流程图如图9-10所示。图9-11 数码静态显示程序编译成功界面......
2023-11-04
可进行置位、复位、取反、等于0转移、等于1转移且清“0”、逻辑运算以及与可寻址位之间传送数据的操作。MCS51系列单片机的I/O接口位输入、输出操作指令只能通过累加位C进行。本例中使用了I/O接口置位清“0”输出操作指令,而例3-1使用了I/O接口按口输出操作指令。......
2023-11-07
为此,我们采用逐次逼近,边焊边试的操作方法,保证读者能100%按质量完成整机装焊。用逻辑笔测试U3-74HC164的引脚13、12、11、10、6、5、4、3的状态,应为11000110。若不能显示以上状态,应立即断开电源开关K1,逐项检查。如果直接进行下一步会相当危险,可能导致整板报废。2)插放芯片U2、U3、U4、U5及数码管。达不到要求不能进行下一步。按第3步3)操作,应正常显示。......
2023-11-07
在上面已经介绍了简易汇编的概念和“宏”指令的特点,现在我们可以进行“宏”指令源程序的编辑、输入和执行操作。指示灯D0被点亮,表示程序从地址00开始正确执行。可反复操作,表示机器功能正确,可以使用。hex文件程序输入对于hex文件用上面示例的方法,将机器码输入到存储器内。......
2023-11-07
应用判0指令控制累加“1”循环显示的程序。程序点评:控制“01”位就改变“01”位的状态,由“0”变“1”。应用判0指令编写倒计时程序实例运行效果:在单片机键盘上输入机器码程序复位并运行后,01位灯亮,倒计时程序不运行。只有跨线一端接电源正极,另一端触接01位,01位被触接置“1”状态,倒计时程序才开始计时显示。实际中可以通过程序控制驱动执行机构做动作。程序点评:在单片机电路中“-1”键与06位相连接。......
2023-11-07
第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。......
2023-11-07
单片机是将CPU+ROM+RAM+I/O集成在一块小小的芯片上,这种结构使用非常灵活,可以“嵌入”任何控制对象内,组成嵌入式系统。单片机中的片内程序存储器是一种可编程可擦除的只读存储器。通用计算机的CPU主要是进行高速数据处理。单片机体积很小,可以直接“嵌入”到机器的控制板上,实际上就是将计算机系统嵌入到机器内,组成所谓的“嵌入式系统”。......
2023-11-07
相关推荐