51系列单片机程序的设计说明
MCS—51单片机指令系统与程序的设计说明

一、填空题1、指令格式是由操作码和操作数所组成,也可能仅由操作码组成。
2、若用传送指令访问MCS-51的程序存储器,它的操作码助记符应为 MOVC 。
3、若用传送指令访问MCS-51的片内数据存储器,它的操作码助记符应为 MOV 。
4、若访问MCS-51的片外数据存储器,它的操作码助记符应为 MOVX 。
5、累加器(A)=80H,执行完指令ADD A,#83H后,进位位C= 1 。
6、执行ANL A,#0FH指令后,累加器A的高4位= 0000 。
7、JZ rel的操作码地址为1000H,rel=20H,它的转移目的地址为 1022H 。
8、JBC 00H,rel 操作码的地址为2000H,rel=70H,它的转移目的地址为 2073H 。
9、累加器(A)=7EH,(20H)= #04H,MCS-51执行完ADD A,20H指令后PSW.0= 0 。
10、MOV PSW,#10H是将MCS-51的工作寄存器置为第 2 组。
11、指令LCALL 37B0H,首地址在2000H,所完成的操作是 2003H 入栈,37B0H →PC。
12、MOVX A,@DPTR源操作数寻址方式为寄存器间接寻址。
13、ORL A,#0F0H是将A的高4位置1,而低4位保持不变。
14、SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为00B7H 。
15、设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为 2080H 。
16、MOV C,20H源寻址方式为位寻址。
17、在直接寻址方式中,只能使用 8 位二进制数作为直接地址,因此其寻址对象只限于片内RAM 。
18、在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。
19、在变址寻址方式中,以 A 作变址寄存器,以 PC 或 DPTR 作基址寄存器。
20、假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC后,把程序存储器 1031H 单元的内容送入累加器A中。
51单片机控制LED灯程序设计

51单片机:LED灯亮灯灭程序设计1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。
程序:01: MOV A , #11111110B ; 存入欲显示灯的位置数据02: MOV P1,A ; 点亮第一只灯03: JMP $ ; 保持当前的输出状态04: END ; 程序结束2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。
程序:01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据02:MOV P1,A ; 点亮灯03:JMP START ; 重新设定显示值04:END ; 程序结束3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。
程序:01:START: MOV R0, #8 ;设左移8次02:MOV A, #11111110B ;存入开始点亮灯位置03:LOOP: MOV P1, A ;传送到P1并输出04:RL A ;左移一位05:DJNZ R0, LOOP ;判断移动次数06:JMP START ;重新设定显示值07:END ;程序结束4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。
程序:01:START: MOV R0, #8 ;设右移8次02:MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出04: ACALL DELAY ;调延时子程序05: RR A ;右移一位06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ;09:DLY1: MOV R6,#100 ;10: DLY2: MOV R7,#100 ;11: DJNZ R7,$ ;12: DJNZ R6,DLY2 ;13: DJNZ R5,DLY1 ;14: RET ;子程序返回15:END ;程序结束5.功能说明:单片机P1端口接8只LED,每次点亮一只,先把右边的第一只点亮,0.5秒后点亮右数的第二只灯,第一只熄灭,再过0.5秒点亮右数的第三只灯,第二只熄灭,…亮灯按此顺序由右向左移动。
基于51单片机的智能交通灯系统设计说明

十字路口交通灯控制系统的设计1.设计思路近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。
本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。
从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。
和复位电路控制电路等组成,较好的模拟了交通路面的控制。
1.1 电源提供方案采用单片机控制模块提供电源。
1.2显示界面方案采用数码管显示。
这种方案只显示有限的符号和数码字符,简单,方便。
1.3 输入方案:直接在I/O口线上接上按键开关。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择该方案。
2 单片机交通控制系统总体设计2.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。
一共可以有四个状态。
通过具体的路口交通灯状态的分析我们可以把这四个状态归纳如下:(1)东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时80秒。
此状态下,东西向禁止通行,南北向允许通行。
(2)东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
(3)南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时60秒。
此状态下,东西向允许通行,南北向禁止通行。
(4)南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
用图表表示灯状态和行止状态的关系如下:表1交通状态及红绿灯状态灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。
八路抢答器说明书概要

烟台大学51单片机课程设计说明书课题:八路抢答器学生姓名:王志林学号:2院系:机电汽车工程学院指导老师:姜风国同组成员:张凤礼、张体栋、程事业、范光科2013 年 06 月 05 日目录1 设计任务 (2)2 系统总体方案 (2)3 硬件设计 (3)3.1 控制系统所需硬件 (3)3.2 硬件原理介绍 (4)4 软件设计 (6)4.1 软件总体设计 (6)4.2 程序流程图 (7)5 软件仿真...................................................................................... (9)5.1 Keil软件 (9)5.2在Proteus软件 (9)6小结 (10)附1:源程序代码 (11)附2:参考文献 (18)1 .设计任务本设计要求学生结合现有的实际条件,以51单片机为控制核心,设计一个8路智能抢答器。
要求实现以下功能:1) 有一主持人和8个参赛队员2) 当主持人按下抢答按键,参赛队员在10秒内可以抢答,并且抢答器开始倒计时。
剩余5秒时,如果仍无人抢答,则系统每1s报警一次。
如超出10秒则不能抢答;如抢答成功,则显示抢答队号。
3) 抢答成功则需在60秒内回答完成,如超出时间则抢答无效,显示无效指示。
如果60秒完成回答,则抢答成功,显示有效。
剩余5秒时,如果仍无人回答,则系统每1s报警一次。
4) 当主持人按下复位键时,系统回到初始状态。
5) 倒计时期间,如果主持人想终止倒计时,可以按下“停止”按键,系统会自动进入准备状态。
主要硬件设备:AT89C51单片机,8输入3态缓冲器/线驱动器74LS244,六反相驱动器7404,共阳极LED数码管等,12MHZ晶振,74LS04反相器,手动开关,按键若干,报警喇叭。
2.系统总体方案2.1整体方案设计该智能抢答器以AT89C51单片机为控制核心,控制精度较高,操作误差主要来自晶振自身所造成的误差。
51单片机INTO、INT1中断计数c语言源程序

单片机C语言程序设计:INT0 中断计数来源:21ic作者:关键字:INT0单片机C语言程序设计/* 名称:INT0 中断计数说明:每次按下计数键时触发INT0 中断,中断程序累加计数,计数值显示在 3 只数码管上,按下清零键时数码管清零*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//0~9 的段码uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f ,0x6f,0x00};//计数值分解后各个待显示的数位uchar DSY_Buffer[]={0,0,0};uchar Count=0;sbit Clear_Key=P3^6;//数码管上显示计数值void Show_Count_ON_DSY(){DSY_Buffer[2]=Count/100; //获取3 个数DSY_Buffer[1]=Count%100/10;DSY_Buffer[0]=Count%10;if(DSY_Buffer[2]==0) //高位为0 时不显示{DSY_Buffer[2]=0x0a;if(DSY_Buffer[1]==0) //高位为0,若第二位为0 同样不显示DSY_Buffer[1]=0x0a;}P0=DSY_CODE[DSY_Buffer[0]];P1=DSY_CODE[DSY_Buffer[1]];P2=DSY_CODE[DSY_Buffer[2]];}//主程序void main(){P0=0x00;P1=0x00;P2=0x00;IE=0x81; //允许INT0 中断IT0=1; //下降沿触发while(1){if(Clear_Key==0) Count=0; //清0Show_Count_ON_DSY();}}//INT0 中断函数void EX_INT0() interrupt 0{Count++; 计数值递增}单片机C语言程序设计:INT0 及 INT1 中断计数来源:21ic作者:关键字:INT0INT1单片机C语言/* 名称:INT0 及INT1 中断计数说明:每次按下第 1 个计数键时,第 1 组计数值累加并显示在右边3 只数码管上,每次按下第 2 个计数键时,第2 组计数值累加并显示在左边3 只数码管上,后两个按键分别清零。
51单片机课程设计

计算机硬件技术基础(MCS-51单片机原理及应用)综合实验报告书学院:能环学院班级:热能073设计人:王治博学号: 070662同组人:李超学号:070650一、题目:全自动洗衣机二、目的与要求:1.目的:1.进一步加深对MCS-51单片机内部结构和程序设计方法的理解。
2.提高综合运用MCS-51单片机的软硬件进行程序设计的能力。
2.基本要求:(1)要求使用面向对象和结构化程序设计的编程思路。
(2)学校的刷卡式全自动洗衣机给同学们的生活带来了很大便利,现利用MCS—51单片机,通过延时、定时、中断等操作实现全自动洗衣机工作过程的模拟控制。
3.设计说明:运用了中断,延时等来模拟全自动洗衣机工作的全过程,用指示的点亮,熄灭来表示洗衣机的正转反转及开盖,刷卡,注水,脱水等全部过程。
三、设计方法和基本原理:1.问题描述:分析全自动洗衣机的工作过程:接通电源后,打开洗衣机盖子放入衣物和洗衣粉,盖上盖子。
通过刷卡启动注水,利用外部中断0模拟注水达标志位,停止注水并开始洗衣。
洗衣过程为:正转10秒(利用延时实现),间歇4秒,然后反转10秒,间歇4秒,再正转(这里认为已洗静),然后开始排水,同样利用延时模拟排水达标志位,排水结束,如此循环往复3次(注水—洗涤—排水过程),认为洗衣过程结束。
然后开始脱水操作,利用定时器,定时时间到,打开洗衣机盖子取出衣物,等待下一次刷卡,即下一次洗衣任务。
试验中用各指示灯的亮灭来表示洗衣过各环节的相应状态。
2.涉及到的硬件:LED指示灯3.流程图四、程序清单:ORG 8000HLJMP MAINORG 8003HLJMP INTT0ORG 800BHLJMP TOS0MAIN: CLR P1.7 ;电源指示灯亮WAIT:JB P3.1,W AIT ;等待刷卡MOV SP,#5FHSETB EA ;允许cup中断SETB EX0 ; 允许外部中断SETB IT0 ;令外部中断为边沿触发SETB ET0 ;开启T/C0中断SETB PX0 ;令T/C0中断优先MOV TMOD,#01H ;置T/C0为方式1,定时MOV TH0,#4CH ;送定时初值MOV TL0,#00HMOV R2,#00HMOV R1,#03H ;重复3次YY:CLR P1.1 ; 注水灯亮,开始注水SETB PSW.5FF:JNB F0,FF0 ;等待注水达标SJMP FFFF0:CLR P1.3 ;开始正转MOV 40H,#0AHFF1:LCALL DELAYDJNZ 40H,FF1SETB P1.3CLR P1.2 ;间歇MOV 41H,#04HFF2:LCALL DELAYDJNZ 41H,FF2SETB P1.2CLR P1.4 ;开始反转MOV 42H,#0AHFF3:LCALL DELAYDJNZ 42H,FF3SETB P1.4CLR P1.6 ;排水灯亮,开始排水MOV 43H,#03HFF4:LCALL DELAYDJNZ 43H,FF4SETB P1.6 ;排水结束DJNZ R1,YY ; 检验是否继续洗衣FF5:CLR P1.5 ;开始脱水SETB TR0 ;启动T/C0 HERE:SJMP HERETOS0:MOV TMOD,#01HMOV TH0,#4CHMOV TL0,#00HINC R2CJNE R2,#200,NEXTMOV R2,#00HCLR TR0SETB P1.5LJMP MAINNEXT:RETIINTT0:CLR F0SETB P1.1RETIDELAY:MOV R5,#92 ;延时子程序DELY:MOV R7,#35DEL1:MOV R6,#120DEL2:DJNZ R6,DEL2DJNZ R7,DEL1DJNZ R5,DEL YRETEND五.程序调试:(1)将所编写的程序在WIN51文件下进行编译,看是否有错误出现,根据编译提示进行修改,进行编译,如果还不能达到要求的结果,继续进行修改,直到所编写的程序0个错误0个警告。
单片机C51语句 教案

else
语句2
编程者的本意是外层的if与else配对,缩进的if语句为内嵌的if语句,但实际上else将与缩进的那个if配对,因为两者最近,从而造迈岐义。为避免这种情况,建议编程时使用大括号将内嵌的if语句括起来,这样可以避免出现这样的问题。
三、swich语句
当程序中有多个分支时,可以使用if嵌套实现,但是当分支较多时,则嵌套的if语层数多,程序冗长而且可读性降低。C语言提供了switch语句直接处理多分支选择。Switch的一般形式如下:
教 案 纸第1页
学
科
单片机
C51语句汇总
检 查
授课班级
2
授课时数
6
教具
授课时间
教学方法
演示、讲解、
教学目的
掌握C51语句格式和使用方法和范围
教学重点
和难点
C51语句格式和使用方法和范围
复习提问
教学内容、方法、过程和板书设计
教学追记
一、if语句
if语句是用来判定所给定的条件是否满足根据判定的结果(真或假)决定执行给出的两
六、for语句
C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。
for语句的一般形式为:
for(表达式1;表达式2;表达式3)语句
教 案 纸附页
第7页
教学内容、方法、过程和板书设计
教学追记
它的执行过程是:
(1)先求解表达式1
(2)求解表达式2,其值为真,则执行for语句中指定的内嵌语句(循环体),然后执行第(3)步,如果为假,则结束循环。
{ for(j=0;j<125;j++)
51单片机20个实验,代码详细

第一章单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。
适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。
该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。
该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。
为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。
二、单片机板简介本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。
以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。
因此构成单片机实验系统。
1、主要技术参数(1)MSC-51单片机板板上配有ATMEL公司的STC89C51芯片。
STC89C51资源:32个I/O口;封装DIP40。
STC89C51开发软件:KEIL C51。
2、MSC-51单片机结构(1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。
(2)单片机板左上侧有一个串口,用于下载程序。
(3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。
(4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。
三、母板简介主要技术参数(1)实验系统电源实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。
主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。
为适用多种需要,配置了+5V,+12V,—5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。
此外,还设有螺旋保险插孔保护实验箱。
(2)RS232接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 汇编语言程序设计概述
4. 2 基本程序结构
基本程序结构
1、顺序结构程序 2、分支结构程序 3、循环结构程序 4、子程序 5、中断程序
4. 2 基本程序结构
4.2.1 顺序结构
顺序结构是各类程序中最简单的,也是最基本的 程序结构。顺序结构程序的特征是整个程序段没有 任何转移指令。主要由数据传递类指令和数据运算 类指令组成,通常用于执行数据传送和较为简单的 算术或逻辑运算任务。
说明:该伪指令的作用是通知汇编程序,从指定的地址单元开 始(通常由标号指定首地址),保留由操作数(常数或表达 式)规定的字节空间。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
7、位地址赋值伪指令BIT 格式:字符名称 BIT 位地址 说明:该伪指令给字符名称赋予位地址(片内RAM和SFR中的
在编写程序过程中,如果遇到在
几个程序段中都需要执行某段相
子程序
同程序的情况(功能独立),为
调用
减少编程工作量和节省程序存储 断点
空间,就应该采用子程序结构,
将重复执行的相同程序段编写成
为一个子程序(功能子程序)。
返回
4. 2 基本程序结构
4.2.3 子程序结构
MAIN: ……
;进入主程序
MOV R0,#03H ;设置入口参数(延时1)
ORG 0030H MAIN: SETB IT0
SETB EX0 SETB EA HERE: AJMP HERE
;主程序实际入口,边沿触发设置 ;外部中断0允许 ;总中断允许
;等待再次进入中断服务程序
4. 2 基本程序结构
4.2.5 中断程序结构
中断服务子程序:
ORG 1200H
EXTR:PUSH PSW ;保护现场
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
3、数据地址赋值伪指令DATA 格式:字符名称 DATA 操作数
说明:DATA伪指令的功能与EQU伪指令相似,不同 之处在于DATA伪指令所定义的字符名称可先使用后 定义(赋值),也可先定义(赋值)后使用。在程 序中它常用来定义(赋值)数据地址。
;###################################
SUBPRO:MOV R1,#03H
DJNZ R1,$
DJNZ R0,SUBPRO
RET
;子程序返回
END
4. 2 基本程序结构
4.2.5 中断程序结构
单片机中断程序设计主要有以下三个方面: 1、中断向量设置 2、中断初始化 3、中断服务程序
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
2、汇编语言的语句格式 MCS-51系列单片机汇编语言的语句格式如下: [<标号>]:<操作码> [<操作数>];[<注释>]
◇ [<标号>] —— 标号是汇编语句地址的符号表示。 ◇ <操作码> ——用于规定该语句所执行的操作。 ◇ [<操作数>] —— 操作数为汇编指令的操作提供数据或地址 ◇ [<注释>] ——注释是指对一条汇编语句或一段汇编语言程序
单片机原理与接口技术
第四章 MCS-51系列单片机程序设计
2010/5/18
4.1 汇编语言程序设计概述
计算机是仿照人的思维方式顺序执行一条条指令来完成特定 任务的机器,计算机程序因此被定义为指令或语句的“有序 集合”,程序设计是指编写计算机程序的过程。
汇编语言是用指令助记符等表示的计算机指令,采用汇编语 言编写的程序被称为汇编语言程序。汇编语言程序具有代码 效率高(编译后的指令代码占用存储空间小)和执行时间短 等优势和特点。
MOV A,40H
CJNE A,41H,LOOP ;取2个数进行比较
LOOP: JNC LOOP1
;根据CY值,判断单分支出
MOV A,41H
;41H单元中是大数
LOOP1: MOV 30H,A
;40H单元中是大数
RET
4. 2 基本程序结构
4.2.2 分支结构
2、多分支选择结构
当程序的判别部分有两个以上的出口(分叉)时, 称为多分支选择结构。
ACALL SUBPRO ;调用子程序
……
;子程序返回,继续执行主程序
;###################################
;子程序入口地址(子程序名称):SUBPRO
;功能:延时子程序(延时时间由R0初值设置)
;入口参数:R0内存放延时计数初值
;出口参数:无
;使用寄存器:R0、R1
4. 2 基本程序结构
4.2.1 顺序结构
例4-1,将内部 RAM 中 20H 单元和 30H 单元的无符号数 相加,存入R0(高位)和R1(低位)中。源程序如下:
MOV A,20H ;取出被加数
ADD A,30H ;两数相加
MOV R1,A ;低位存入R1
CLR A
;
ADDC A,#00H ;取进位标志
的说明,以增加汇编语言程序的可读性。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
1、起始地址定位伪指令ORG 格式:[标号]:ORG 操作数
说明:其功能是指出紧接其后的指令的目标代码的 第一个字节在程序存储器中的绝对地址。例如:
ORG 0030H
START:MOV A,#33H
...... 即定义标号START表示的起始地址值为0030H,该
由于单片机的存储器等资源有限,单片机应用程序中经常需 要面对硬件操作,且对程序执行的时间有较为严格的要求或 限制。因此,汇编语言程序设计是单片机应用系统设计的重 要基础之一。
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
1、汇编语言的特点: 汇编语言的特点归纳如下:
◇ 助记符指令与机器指令一一对应; ◇ 程序代码效率高,占用存储空间小,运行速度快, 汇编语言程序往往是最优化的程序; ◇ 助记符指令(汇编指令)与计算机硬件联系紧密, 要求编程人员对计算机硬件较为熟悉; ◇ 汇编语言程序缺乏通用性,移植性较差。
;若X< 10,转LOOP2
CJNE A,#100,LOOP1;与100比较
LOOP1: JNC LOOP3
;若X>100,转LOOP3
MOV 40H,#00H ;因10≤X<100,故Y=0
SJMP EXIT
LOOP2: DEC A
;因X<10,故Y=X一1
MOV 40H,A
SJMP EXIT
LOOP3: INC A
4. 2 基本程序结构
4.2.3 循环结构
2.循环程序设计 在一个循环程序的循环体中不包含另外的循环结构称为单重 循环。 例4-5,设某字符串以回车符(0DH)为结束标志,并存放在 内部RAM40H单元开始的连续存储单元之中,编写测试字符 串长度的汇编语言程序。 编程思路 —— 为测试字符串(0DH)的长度,应使用逐 个字符依次与回车符(ODH)比较的方法。为此需要设一个字 符串指针和一个长度计数器,字符串指针用于指定字符,长 度计数器用于累加字符串的长度。如比较不相等,则长度计 数器和字符串指针都加1,以继续往下比较;如果比较相等, 则表示该字符为回车符,字符串结束,长度计数器的值就是 字符串的长度。
例4-4,设变量X的值存放在内部RAM的30H单元中, 编程求解下列函数式,将求得的函数值Y存人40H单 元。
X+1 (X≥100)
Y=
0 (10≤X<100)
X一1 (X<10)
4. 2 基本程序结构
MOV A,30H
;取自变量X值
CJNE A,#10,LOOP ;与10比较,A中值不又称循环体,是重复执行的数据处理程序段, 它是循环程序的核心部分(功能主体)。
4. 2 基本程序结构
4.2.3 循环结构
(3)循环控制部分 控制部分控制循环继续与否。
(4)结束部分 结束部分对循环程序全部执行结束后的结果进行
分析、处理和保存。
循环结构程序一般分为“单重循环”和“多重循 环”两类,循环次数的控制有多种方式,当循环次 数已知时,可采用循环次数计数器控制循环;若循 环次数未知时,可按条件满足与否控制循环。
CPL A
;累加器A数据取反
MOV P1,A ;数据输出至P1端口
POP PSW ;恢复现场
RETI
;中断返回
4.3 汇编语言程序设计实践
汇编语言程序设计的一般步骤如下:
◇ 建立数学模型 —— 用适用的数学方法描述所需要解决的问 题;
◇ 确定算法 —— 将数学模型转化为适合单片机处理(顺序执 行)的形式,采用绘制程序流程图等方法表示程序设计的思 路和依据。
MOV R0,A ;高位存入R0
RET
4. 2 基本程序结构
4.2.2 分支结构
分支结构程序利用条件转移指令,使程序在执行 某一指令后(产生测试条件),根据所规定的条件 满足与否改变其后程序执行的顺序(产生分叉), 即根据判断条件的成立与否来确定程序的走向。分 支结构程序的特征是程序段中有控制转移类指令 (条件转移指令)。
4. 2 基本程序结构 4.2.5 中断程序结构 例4-7,设89C51单片机外中断0(EX0)下降沿有效,每次进
入中断服务程序,要求将89C51单片机的P1.7~P1.0取反。
主程序如下:
ORG 0000H
STAR:AJMP MAIN
ORG 0003H
AJMP EXTR 口地址
;主程序原始入口 ;外部中断0中断向量 ;跳转到EX0中断服务子程序实际入
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令