单片机第二次试验报告——分支程序设计
分支程序的设计实验报告
分支程序的设计实验报告实验目的本实验旨在通过设计一个分支程序来展示控制流程中的分支结构,加深对这一概念的理解,并通过实际编程提高对分支结构的应用能力。
实验原理分支程序是一种常见的控制流程结构,它根据条件的真假选择不同的执行路径。
在编程中,分支程序通常用于判断特定条件是否满足,并根据不同结果执行不同的操作。
常见的条件语句包括if 语句、switch 语句等。
在设计一个分支程序时,需要明确条件和执行路径,并根据不同情况进行相应处理。
分支程序的设计需要考虑条件的正确性和完备性,避免出现判断错误或遗漏情况。
实验过程本实验选择使用Python 语言来设计和实现一个简单的分支程序。
具体步骤如下:1. 首先,根据实际需求确定分支程序的目标和条件。
在本实验中,我们设计了一个分支程序来判断一个数字是否是奇数。
2. 接下来,根据选定条件,实现相应的判断逻辑。
我们使用if 语句来对给定数字进行判断。
如果数字对2 求余等于0,那么这个数字是偶数;否则,这个数字是奇数。
3. 在程序中加入输出语句,以便用户能够看到最终的判断结果。
4. 编译和运行程序,观察输出结果是否符合预期。
在实验过程中,我们还可以进行额外的调试和优化,并添加更多的分支条件来扩展程序功能。
例如,我们可以增加一个分支条件来判断数字是否为负数,或者根据数字的大小进行不同的处理等。
实验结果经过编写、编译和运行,我们得到了一个简单的分支程序。
该程序可以根据给定的数字判断其是否是奇数,并将结果输出给用户。
下面是程序的源代码:pythonn = int(input("请输入一个整数: "))if n % 2 == 0:print("这是一个偶数。
")else:print("这是一个奇数。
")以下是程序运行的示例结果:请输入一个整数: 5这是一个奇数。
请输入一个整数: 8这是一个偶数。
实验总结通过本次实验,我们深入学习了分支程序的设计原理和实现方法,并通过编写一个简单的示例程序加深了对分支结构的理解。
分支程序设计实验报告
实验二分支程序设计一、实验目的:1、学习分支程序的设计方法2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程二、实验环境:硬件环境IBM/PC 及其兼容机软件环境操作系统DOS编辑程序EDIT或其他编辑程序汇编程序MASM.EXE连接程序LINK.EXE调试程序DEBUG.EXE三、实验内容:1、在屏幕上显示如下信息:1------------------------Panda2------------------------Cat3------------------------Rabbit4------------------------Pig5------------------------EXIT(Please choose 1,2,3,4or 5)-----若输入1,显示“I like panda”后程序结束;若输入2,显示“I like cat”后程序结束;若输入3,显示“I like rabbit”后程序结束;若输入4,显示“I don’t like pig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“You press an error key!”后程序结束。
1)流程图2)源程序DA TA SEGMENTINFOR1 DB 0AH,0DH,"1-----------Panda:$"INFOR2 DB 0AH,0DH,"2-----------Cat:$"INFOR3 DB 0AH,0DH,"3-----------Rabbit;$"INFOR4 DB 0AH,0DH,"4-----------pig:$"INFOR5 DB 0AH,0DH,"5-----------EXIT:$"INFOR6 DB 0AH,0DH,"(please choose 1,2,3,4 or 5---):$"INFOR7 DB 0AH,0DH,"I like Panda:$"INFOR8 DB 0AH,0DH,"I like Cat:$"INFOR9 DB 0AH,0DH,"I like Rabbit;$"INFOR10 DB 0AH,0DH,"I like pig:$"INFOR11 DB 0AH,0DH,"you press an error key!:$"DA TA ENDS ;数据段结束CODE SEGMENT ;代码段开始ASSUME CS:CODE,DS:DATA ;段寻址START: MOV AX,DATA ;将data的数据存入ax中MOV DS,AX ;为ds赋值MOV DX,OFFSET INFOR1 ;返回变量INFOR1段内偏移地址【运行后在屏幕上显示字符1-----------Panda:】MOV AH,09HINT 21H ;执行九号功能调用MOV DX,OFFSET INFOR2MOV AH,09HINT 21HMOV DX,OFFSET INFOR3MOV AH,09HINT 21HMOV DX,OFFSET INFOR4MOV AH,09HINT 21HMOV DX,OFFSET INFOR5 ;返回变量INFOR5段内偏移地址【运行后在屏幕上显示字符5-----------EXIT:】MOV AH,09HINT 21HMOV DX,OFFSET INFOR6MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,'1'JE PandaCMP AL,'2'JE CatCMP AL,'3'JE RabbitCMP AL,'4'JE PigCMP AL,'5'JE PENDJMP OtherPanda:MOV DX,OFFSET INFOR7MOV AH,09HINT 21HJMP PENDCat:MOV DX,OFFSET INFOR8MOV AH,09HINT 21HJMP PENDRabbit:MOV DX,OFFSET INFOR9MOV AH,09HINT 21HJMP PENDPig:MOV DX,OFFSET INFOR10MOV AH,09HINT 21HJMP PENDOther:MOV DX,OFFSET INFOR11MOV AH,09HINT 21HJMP PENDPEND: MOV AH,4CHINT 21HCODE ENDSEND START2、从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。
分支程序设计实验实验报告
分支程序设计实验实验报告————————————————————————————————作者:————————————————————————————————日期:ﻩ实验二分支程序设计实验实验报告实验名称:分支程序设计实验指导教师罗志祥专业班级光信1006 姓名张博学号U201013339 联系方式一、任务要求:熟练掌握K eil C环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。
1. 设有8bits 符号数X 存于外部R AM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。
240/2204020X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩当当当2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P 0、P 1、P2端口输出(以压缩B CD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):a . 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P 2口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路:1.分支函数程序设计:首先将X 赋给累加器A ,与40比较大小,将大于或等于40的执行乘方操作;小于40的再与20做比较,大于20的执行取除法操作,小于或等于20的执行取反操作。
最后将计算结果Y 存于片外的RAM 上。
2.电子时钟程序设计思路:首先用循环程序的嵌套实现一个1s 的延时,同时让记秒的端口P2同步加一,到60后清零;再让此循环执行60次实现1min 的延时,同时让P1同步加一,到60后清零;再让分钟的循环执行24次,实现1hour 的延时,同时让P 0同步加一。
至此循环,即可实现24小时的时钟功能。
(注:本计算机的晶振频率为12MHz)3.4位十进制加、减1计数程序思路:低位的个位和十位赋给一个寄存器,而将高位即百位千位赋给另外一个寄存器,通过循环程序使低位数循环100次即向高位进位或借位,高位循环100次后即回归初始状态,同时设计两个子函数分别执行加一、减一操作。
循环和分支程序设计(实验报告)
实验二 循环和分支程序设计学号 201216008 姓名 孙坤 专业 电子信息科学与技术 成绩【实验目的】(1) 熟悉上机实验流程、调试及查看实验结果。
(2) 熟悉汇编语言编程环境,DOS 调用应用;(3) 编写循环和分支程序,并调试;【实验内容及步骤】1、 实验要求:从键盘输入一系列字符,以回车符结束,编程统计其中数字字符的个数(不超过100个) 提示:程序首先调用DOS 功能的1号功能,从键盘输入字符。
为得到字符串,可以采用循环结构,连续输入。
在输入的过程中通过判断是否是回车来结束输入。
其中回车的ASII 码(0DH )。
数字的0的ASII 码(30H )9的(39H )流程图:Next1函数:Next 函数:Exit函数:2、实验内容:实验程序:dataseg segmentmess1 db'Please input',13,10,'$' mess2 db'Ouput',13,10,'$' dataseg endscodeseg segmentassume ds:dataseg, cs:codeseg main procstart:mov ax,datasegmov ds,axmov bx,0lea dx,mess1mov ah,09hint 21hloop3:mov ah,01 int 21hcmp al,0dh jz output cmp al,'0' jnl loop1 jmp loop3loop1:cmp al,'9' jng loop2 jmp loop3loop2:inc bx jmp loop3 output:mov dx,13 mov ah,02h int 21hmov dx,10int 21hlea dx,mess2 mov ah,09hint 21hmov dx,13mov ah,02h int 21hmov dx,10mov ah,02h int 21hmov ax,bxmov cl,10div clmov bh,ahadd al,30h mov dl,almov ah,02h int 21hmov al,bhmov dl,almov ah,02h int 21hmov ax,4c00h int 21hmain endpcodeseg endsend start3、实验结果:【实验心得与体会】通过本次实验,首先我加深了对DOS功能调用的使用,对循环结构及分支程序进行了编写,有了更清晰的认识。
分支与循环程序设计实验-报告
实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137********一、任务要求1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。
二、设计思路1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 将外部单元1000H 中的X ,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X 与64的大小关系,再判断X 与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE 指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H 以及1002H 。
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。
单片机-实验二-分支程序设计实验
实验二实验报告·将00-99的十进制数据转换成二进制进行开关量的输入,L0灯亮将100的十进制转换为01100010的二进制开关量进行输入,L1灯亮将101-127的十进制转换为二进制进行开关量的输入,L2灯亮完整的接线图实验操作1、正确连接实验板子和电脑,将点源接入,数据线连接到电脑的USB接口,在电脑端运行软件,取消勾选模拟器,按照实验装置的名称正确的选择响应的系统。
2、在软件内部按照输入分支程序结构。
3、打开点源开关。
4、调整输入的各个断口的开关量,着重关注在二进制数01100010附近的变化.5、整理实验器材。
思考题1 写出分支程序设计的要点分支结构也成为选择结构。
在程序中每个分支均为一个程序段。
为分支需要,程序设计时不要忘记给程序段的起始地址赋予一个地址标号,以供选择分支使用。
这次实验使用的是一个多分支程序结构,可以通过一系列的JC\JNC\JB\JNB的判断,进行逐级分支。
并且可以使用CJNE进行实现。
80C51中没有专门的多分支转移指令,可以使用的变址转移指令“JMP @A+DPTR”,但是这样的指令需要数据表格配合。
思考题2 8051单片机有几个并行口,写出各并行口的特点8051单片机有4个并行I/O口,分别为P0\P1\P2\P3,以实现数据的并行输入与输出。
这4个并行口均是8为双向口线,各占8个引脚,在P3口线上有着引脚复用,均有第二功能信号,这些第二功能信号都是重要的控制信号,在实际使用中总是先按需要优先选用第二功能,剩下的不用的再当作口线使用。
并行可以有效的提高单片机的工作效率。
思考题3 实验中遇到的苦难在这个实验中和实验一显着不同的是我们需要重新认识硬件与软件的配合,一些数据线的链接,点源的通断都是我们学习的要点,我们也第一次接触到了输入口和输出口相互之间的区别。
这个实验我们一定要将十进制的思维转换过来转换为二进制的思维,在机器语言中只有开关量的通断,而这个题目也是很好的应用了开关量的通断完成了这个实验。
单片机程序设计实训报告
一、实训目的通过本次单片机程序设计实训,使学生掌握单片机程序设计的基本方法和步骤,提高学生的实际操作能力和编程技巧,培养学生在电子工程领域中的实践能力。
同时,通过实训加深对单片机原理、指令系统、接口技术等方面的理解,为后续单片机技术课程的学习打下坚实基础。
二、实训内容1. 实训环境本次实训采用Keil C51软件进行单片机程序设计,仿真平台为Proteus。
2. 实训任务(1)熟悉单片机硬件结构及指令系统;(2)掌握单片机C语言编程技巧;(3)熟练运用Proteus进行仿真实验;(4)设计并实现以下功能:①控制LED灯闪烁;②实现按键输入,控制LED灯点亮或熄灭;③实现定时器中断,控制LED灯以一定频率闪烁。
三、实训过程1. 熟悉单片机硬件结构及指令系统在实训过程中,我们首先学习了单片机的硬件结构,包括CPU、存储器、输入/输出接口等。
同时,我们掌握了8051单片机的指令系统,包括数据传送、算术运算、逻辑运算、控制转移等指令。
2. 掌握单片机C语言编程技巧在实训过程中,我们学习了单片机C语言的语法规则,掌握了变量声明、数据类型、运算符、函数等基本概念。
通过编写简单的程序,我们熟悉了单片机C语言编程的基本技巧。
3. 熟练运用Proteus进行仿真实验Proteus是一款功能强大的仿真软件,能够模拟单片机的硬件电路和程序运行。
在实训过程中,我们学会了如何使用Proteus创建电路图、添加元器件、设置仿真参数等操作。
通过仿真实验,我们验证了程序的正确性,提高了编程能力。
4. 设计并实现以下功能(1)控制LED灯闪烁设计思路:使用定时器中断,每隔一定时间改变LED灯的状态。
程序代码:```c#include <reg51.h>void Timer0_Init() {TMOD = 0x01; // 设置定时器模式为模式1TH0 = 0xFC; // 设置定时器初值TL0 = 0x18; // 设置定时器初值ET0 = 1; // 使能定时器0中断EA = 1; // 使能全局中断}void main() {P1 = 0xFF; // 初始化LED灯状态Timer0_Init(); // 初始化定时器while (1) {// 主循环}}void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新装载定时器初值TL0 = 0x18; // 重新装载定时器初值P1 ^= 0x01; // 切换LED灯状态}```(2)实现按键输入,控制LED灯点亮或熄灭设计思路:使用外部中断,检测按键状态,控制LED灯点亮或熄灭。
分支与循环程序设计实验报告
实验名称分支与循环程序设计实验指导教师罗志祥 ___________专业班级光电1406 姓名段昳晖学号U2014*****联系电话137********、任务要求1.设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单兀,请按要求编写完整程序。
X2当X64Y X /2当10X 64X当X102.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHZ。
二、设计思路1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
X2当X64Y X /2当10X 64X当X10将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H以及1002H=2. 利用51系列单片机设计一个 24小时制电子时钟,电子时钟的时、分、秒数值分别 通过PO 、P1、P2端口输出(以压缩 BCD 码的形式)。
P3.0为低电平时开始计时,为高电平 时停止计时。
设计 1s 延时子程序(延时误差小于 10us ,晶振频率12MHZ 。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用RO R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环 60次,中循环循环1次,中循环60 秒,外循环循环1次,外循环循环24次,清零。
其中对端口显示的秒数、分钟数、时间数, 进行二进制修正。
利用循环来设计延时程序,合理计算语句长度,以及循环次数。
分支程序设计实验报告
一、实验目的1. 理解分支程序设计的概念和作用。
2. 掌握分支语句(如if语句)的使用方法。
3. 通过实际编程练习,提高编程能力和逻辑思维能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容本次实验主要涉及分支程序设计的基本概念和编程实现。
具体内容包括:1. 理解分支程序设计的基本原理。
2. 掌握if语句、elif语句和else语句的使用。
3. 编写分支程序,实现特定功能。
四、实验步骤1. 理解分支程序设计的基本原理。
分支程序设计是一种根据不同条件执行不同操作的程序设计方法。
在Python中,分支语句主要是指if语句、elif语句和else语句。
2. 编写分支程序,实现特定功能。
以下是一个简单的分支程序示例,用于判断用户输入的数字是正数、负数还是零。
```python# 用户输入一个数字num = float(input("请输入一个数字:"))# 使用分支语句判断数字的正负if num > 0:elif num < 0:print("输入的数字是负数。
")else:print("输入的数字是零。
")```3. 分析实验结果。
根据上述程序,当用户输入一个正数时,程序会输出“输入的数字是正数。
”;当用户输入一个负数时,程序会输出“输入的数字是负数。
”;当用户输入零时,程序会输出“输入的数字是零。
”4. 修改程序,增加更多功能。
为了提高程序的实用性,我们可以增加一些功能,如:- 判断用户输入的是整数还是小数。
- 根据用户输入的数字,输出对应的中文数字。
以下是修改后的程序:```python# 用户输入一个数字num = float(input("请输入一个数字:"))# 使用分支语句判断数字的正负if num > 0:print("输入的数字是正数。
单片机实验报告2
《单片机应用系统设计》实验报告院系:仪器科学与工程学院专业:测控技术与仪器实验室:机械楼5楼同组人员:评定成绩:审阅教师:硬件实验一I/O口输入/输出及控制实验Ⅰ、I/O口输入/输出实验一、实验目的1、学习单片机I/O口的使用方法2、学习延时子程序的编写和使用二、实验内容1、I/O口输出:P1口做输出口,接八只发光二极管,编写程序让发光二极管循环点亮。
2、I/O口输入/输出:P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。
编写程序读取开关状态,将此状态在发光二极管上显示出来。
编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。
三、实验步骤1、I/O口输出硬件连接连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L7MCS51的P1口循环点灯2、I/O口输入/输出硬件连接连线连接孔1 连接孔21 K4 P1.02 K5 P1.13 P1.2 L44 P1.3 L5MCS51的P1口输入/输出3、实验说明(1)对于MCS51,P1口是准双向口。
它作为输出口时与一般的双向口使用方法想同;但准双向口用作输入口时,因其结构特点必须对它置“1”,否则读入的数据容易产生错误。
(2)8051延时子程序的延时计算问题,对于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:12/12MHZ=1ms,该延时子程序延时:(256X255+2)X2X1us=130ms。
4、分别连接硬件并执行相关程序,记录结果。
四、提高要求修改I/O口输出程序,先1、3、5、7灯亮,延时后2、4、6、8灯亮,交替点亮。
实验二 分支程序,查表程序编写实验
实验二分支程序,查表程序编写实验一、实验目的1.掌握跳转指令2.掌握子程序调用指令3.掌握查表程序运用二、实验设备单片机IDE集成开发软件三、实验要求验证“实验原理”一节中给出的实例程序,熟悉各种跳转指令、子程序调用指令,以及查表程序编写方法。
四、实验原理作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。
1.跳转指令控制转移的指令包括无条件转移指令和有条件跳转指令。
(1)长跳转指令LJMP addr16长跳转,把16位(2个字节)的地址送入PC中。
〔2〕绝对转移指令AJMP addr11在存储空间2kB内转移。
与PC当前值高5位共同组成16位目标地址。
(3)短跳转指令SJMP rel8位补码表示的地址。
可以在-128到127之间跳转。
(4)间接跳转指令JMP @A+DPTR这是一条很有用的散转指令。
跳转地址在程序运行时动态决定。
(5)累加器判零转移指令JZ rel,JNZ rel,JZ rel,累加器为0转移,JNZ rel,累加器不为0转移。
(6)比较转移指令,CJNE <目的字节>,<源字节>,rel。
CJNE A,#data,relCJNE A,direct,relCJNE @Ri,#data,relCJNE Rn,#data,rel(8)循环转移指令DJNZ Rn,rel。
首先Rn减1,然后判断是否是零,不是则跳转。
DJNZ direct , rel。
首先直接地址中的数据减1,然后判断是否是零,不是则跳转。
(9)位控制转移指令JC rel,若Cy=1,则(PC)<--(PC)+2+rel若Cy=0,则(PC)<--(PC)+2JNC rel若Cy=0,则(PC)<--(PC)+2+rel若Cy=1,则(PC)<--(PC)+2JB bit,rel; 若(bit)=1,则(PC)<--(PC)+3+rel若(bit)=0,则(PC)<--(PC)+3JNB bit,rel若(bit)=0,则(PC)<--(PC)+3+rel若(bit)=1,则(PC)<--(PC)+3JBC bit,rel; 若(bit)=1,则(PC)<--(PC)+3若(bit)=0,则(PC)<--(PC)+3+rel,(bit)←02.子程序调用和返回指令。
分支程序设计实验报告
分支程序设计实验报告
实验名称:分支程序设计实验报告
实验目的:通过分支程序设计的实验,深入理解程序运行的基本
原理,掌握分支语句的应用方法,提高编写程序的能力和水平。
实验原理:分支程序设计是一种基于逻辑运算的程序结构,它可
以根据不同的条件,选择不同的执行路径,从而实现程序不同的输出
效果。
实验过程:首先,确定需要实现的程序功能,并根据程序逻辑设
计分支语句。
然后,使用编程工具编写代码,调试程序,运行程序。
最后,对程序进行测试和优化,达到预期的效果。
实验结果:通过实验,我深入理解了分支程序设计的基本原理和
应用方法。
我能够设计和编写简单的分支程序,实现不同的输出结果。
我还学会了如何测试和优化程序,以达到最佳的执行效果。
通过实验,我提高了编写程序的能力和水平。
实验总结:分支程序设计是计算机编程中非常重要的一部分,掌
握分支语句的应用方法可以提高编写程序的效率和质量。
通过实验,
我能够利用分支语句来设计程序,实现复杂的逻辑运算和条件判断。
我对编程语言的掌握和应用能力也有了进一步的提高。
我相信,凭借
自己的勤奋努力和不断的实践,我一定能成为一名优秀的程序员。
单片机实验二报告
实验二 8155并行I/O口扩展和动态扫描程序编制1.实验目的(1)掌握8155并行I/O芯片扩展和使用方法(2)掌握数码管动态扫描汇编语言的编制方法2.预习要点(1)8155芯片基础知识(2)51单片机的总线时序、地址译码的原理(3)数码管动态扫描显示方法3.实验内容基本要求:通过实验板的上的8155(U16)显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在8个LED数码管上依次动态显示数字1--8。
3.1流程图:3.2程序:ORG 0000HMOV 30H,#1MOV 31H,#2MOV 32H,#3MOV 33H,#4READKEY:MOV A,#0FFHMOV P1,AMOV A,P1JNB ACC.0 ,RP10 JNB ACC.1 ,RP11 JNB ACC.2 ,RP12 JNB ACC.3 ,RP13RP:MOV R0,#30HMOV R3,#0FFHSJMP READKEYRP10:MOV R0,#30HMOV R3,#0FEHAJMP DISPLYRP11:MOV R0,#31HMOV R3,#0FEHAJMP DISPLYRP12:MOV R0,#32HMOV R3,#0FEHAJMP DISPLYRP13:MOV R0,#33HMOV R3,#0FEHAJMP DISPLY DISPLY:MOV A,#03HMOV DPTR,#4100HMOVX @DPTR,AMOV A ,R3LD0:MOV DPTR,#4102HMOVX @DPTR,AMOV A,@R0MOV DPTR,#DTABMOVC A,@A+DPTRMOV DPTR,#4101HMOVX @DPTR,AACALL DELAYRETDTAB:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79HDELAY:MOV R7,#0FFHDELAY1:MOV R6,#0FFHDELAY2:MOV R5,#0FFHDELAY3:DJNZ R5,DELAY3 DELAY4:DJNZ R6,DELAY4DJNZ R7,DELAY1RETEND3.3扩展内容要求:假定30H--33H的存储单元内容为4个字节16进制数,请依序将他们显示在8个LED数码管上实验程序:ORG 0000HAJMP MAINMAIN:MOV 30H,#12H MOV 31H,#34H MOV 32H,#56H MOV 33H,#78H MOV SP,#60HMOV A,#03HMOV DPTR,#4100H MOVX @DPTR,AMOV R4,#4MOV R0,#30HMOV R1,#40HLOOP1:MOV A,@R0ANL A,#0F0HSWAP AMOV @R1,AINC R1MOV A,@R0ANL A,#0FHMOV @R1,AINC R0INC R1DJNZ R4,LOOP1LOOP:ACALL DISPLAY AJMP LOOP DISPLAY:MOV R0,#40HMOV R3,#0FEHMOV R2,#8LD0:MOV A,@R0MOV DPTR,#DISTABMOVC A,@A+DPTRMOV DPTR,#4101HMOVX @DPTR,AMOV DPTR,#4102HMOV A,R3MOVX @DPTR,AACALL DELAYDJNZ R2,LD1RETLD1: INC R0RL AMOV R3,AAJMP LD0DISTAB:DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79HDB 71HDELAY: MOV R7,#0FFHDELAY1:MOV R6,#0FFHDELAY2:DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND3.4心得体会通过这次实验,我对单片机的硬件和软件有了一定的了解。
实验二 分支与循环程序设计实验
开始 (A)X Y (A)=0 ? N (A)>0 ?N (A)=-1 存结果 结果 Y
开始 (A)X (A)=0 ? N (R0)=-1
(A)=1
(A)<0 ?N (R0)=-1 存结果 结果
(a)
(b)
七、实验报告要求 1、实验内容1为必做内容;内容2、3任选为必做。内容1有单步调试 与全速执行记录,内容2或者内容3有单步调试、断点调试以及全速 执行记录。 2、每个内容要求有程序框图与程序清单(每条指令注释)。
实验二
一、 实验目的
分支与循环程序设计实验
1.进一步了解仿真软件使用、汇编程序编写和汇编程序调试方法。
2.掌握分支与循环程序设计的方法。
二、实验仪器和设备 PC机、WAVE仿真软件。
三、实验内容
内容1:设变量X存放于R2,函数值y存放在R3。试按照下式的要求给y赋值: 1 X>0 y = 0 X=0 -1 X<0 内容2:统计一数组(自拟数据)中零、负数、正数的个数。 内容3:求一数组(自拟数据)中最大数(或最小数)。
3、对T21.ASM源程序进行编译。点击项目菜单,选择全部编译。编译无 误后,打开数据窗口,选择外部数据存储器窗口DATA,拖动DATA窗口的 滚动条,使地址**出现在窗口上,观察**单元的内容。执行程序:点击 全速执行快捷按钮,点击暂停按钮,点击复位按钮,可再次运行程序。 4、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄 存器的变化,可以看到程序执行的过程,加深对实验的了解。
5、内容2或者内容3进行2、3、4操作,增加断点调试,观察相应单元或 寄存器数据变化。
六、参考程序 (内容1)
先分支后赋值。自变量X是个带符号数,故可采用累加器判零条 件转移和位控制条件转移指令来分析判断,程序流程如图 (a)所示 。 ORG 0500H MOV A,R2 ;自变量-->(A) CJNE A,#0,L1 ;(A)与0比较,不等则转移 MOV R3,#0 ;若相等,0(R1) SJMP L3 L1: JB ACC.7,L2 ;自变量<0则转移 MOV R3,L3 ;自变量>0,1+(R1) SJMP L3 L2: MOV R3,#0FFH ;自变量<0,1(R1) L3: SJMP $ END
单片机分支循环程序设计与调试
实验性质:设计性实验级别:选做开课单位:信息工程系实验中心学时:2一、实验目的1.熟悉仿真器的软件使用环境及单片机汇编语言编程;2.基本了解数值的各种表达方法。
了解BCD值和ASCII值的区别3.掌握BCD码和ASCII码的原理及相互转换方法。
二、实验要求将本人的班号学号以压缩的BCD码的形式由低到高存放在50H开始的单元中,如将99071B3班转换为990713,99071B3班1号的数字为99071301。
将01→50H、13→51H、07→52H、99→53H。
然后编程将50H~53H中压缩的BCD 码转换成ASCII码,并由低到高存放在60H开始的单元中。
三、实验设备1.PC机一台;2.单片机开发环境Keil C软件。
四、参考程序框图图1 十进制到ASCII码转换参考程序框图五、实验步骤1.根据实验要求参照指导书设计压缩的BCD码转换成ASCII码的详细程序框图;2.启动单片机开发环境Keil C开发实验软件。
新建一个格式为*.Asm的文件。
3.根据自己设计程序框图,编写压缩的BCD码转换成ASCII码程序。
4.对所编写的程序进行编译、调试运行,观察其运行结果。
六、实验程序ORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,#30H ;设置栈指针MOV 50H,#35HMOV 51H,#43HMOV 52H,#06HMOV 53H,#05HMOV 54H,#08HMOV R0,#50HMOV R1,#60HMOV R2,#05H ;BCD码字节数MAIN1: MOV A,@R0MOV B,AANL A,#0FHACALL BCDASCMOV @R1,AMOV A,BSWAP AANL A,#0FHACALL BCDASCINC R1MOV @R1,AINC R1INC R0DJNZ R2,MAIN1SJMP $BCDASC: INC AMOVC A,@A+PCRETDB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39HEND七、实验结果及心得体会通过本次实验掌握了该试验软件的使用方法,及对程序学习。
实验二分支程序实验
实验二分支程序实验实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。
2)掌握利用DEBUG修改参数、检查结果的方法。
3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3、实验准备1)编写实验内容要求的两个程序。
2)写出调试以上程序,即修改程序参数,检查结果的操作方法。
3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
4、实验步骤1)用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。
2)对其进行汇编及连接,产生.EXE文件。
3)对.EXE文件进行调试运行。
(1)用DEBUG调试运行,学会修改AL内容的方法。
(2)对DSPKEY.EXE键入不同的字符,分别进行调试。
(3)在MS-DOS下运行这两个.EXE文件。
5、实验报告要求1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
2)说明本实验是如何利用DEBUG进行调试的。
6、参考程序清单1)显示AL中两位十六进制数程序:;DISPHEX.ASMCODE SEGMENTASSUME CS:CODESTART: MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE NEXT1ADD DL,7NEXT1: ADD DL,30HMOV AH,2INT 21H ;显示高位ASCII码MOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7NEXT2: ADD DL,30HMOV AH,2INT 21H ;显示低位ASCII码MOV AH,4CHINT 21HCODE ENDS ;返回DOSEND START2)显示键入字符程序;DISPKEY.ASMCODE SEGEMENTASSUME CS:CODESTART: MOV AH,1INT 21H ;等待键入字符,送AL CMP AL,0DH ;是否是回车符?JZ DONE ;是则转DONE退出程序CMP AL,’0’JB NEXTCMP AL,’9’JA CHARUPMOV DL,ALMOV AH,2INT 21HJMP STARTCHARUP: CMP AL,41HJB NEXTCMP AL,5AHJA CHRDNDISPC: MOV DL,’C’MOV AH,2INT 21HNEXT: JMP START CHRDN: CMP AL,61HJB NEXTCMP AL,7AHJA NEXTJMP DISPCDONE: MOV AH,4CHINT 21HCODE: ENDSEND START。
单片机第二次试验报告材料——分支程序设计
《微机实验》报告实验名称 分支程序设计实验 专业班级 姓名 学号 序号 联系方式一、任务要求熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。
1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。
240/2204020X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩当当当2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路1.分段函数设计对于第一个任务,相当于设计一个分段函数程序,根据变量X的值所处的区间进行相应的计算。
由学过的知识知道,可利用比较转移指令CJNE来判断X是否等于临界值20,40,若不等,再根据执行CJNE 指令后的进位位CY的值来判断X与临界值的的大小关系,易知CY=0则X大于临界值,CY=1则X小于临界值;如此,再进行相应的计算。
另外,除法计算中可能产生余数,商和余数应该分开存储,若乘方运算结果大于255,高八位与低八位应分开存储。
2. 24小时制时钟程序本程序须可以构建两部分循环。
首先构建一个三重循环实现“一秒延时”,循环体利用NOP指令(单字节指令,1µs)经多次循环达到延时一秒的效果。
再利用已经构建好的“一秒延时”部分,设计计时系统的三重循环,秒(0-59)、分(0-59)、时(0-23)。
需要注意的是,在小时、分、秒达到59时,下一次应该为零。
分支程序实验实验报告
一、实验目的1. 理解分支程序的概念和作用。
2. 掌握C语言中if语句、switch语句的使用方法。
3. 能够根据实际需求,合理运用分支程序解决问题。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容1. 使用if语句实现一个简单的分支程序。
2. 使用switch语句实现一个多分支程序。
3. 结合if语句和switch语句,编写一个综合性的分支程序。
四、实验步骤1. 使用if语句实现一个简单的分支程序(1)创建一个新的C语言项目,命名为“分支程序实验”。
(2)在主函数中,定义一个变量score用于存储用户输入的分数。
(3)使用scanf函数获取用户输入的分数。
(4)使用if语句判断分数所在的范围,并输出相应的评价。
(5)编译并运行程序,验证分支程序是否正确实现。
2. 使用switch语句实现一个多分支程序(1)在主函数中,定义一个变量num用于存储用户输入的数字。
(2)使用scanf函数获取用户输入的数字。
(3)使用switch语句根据用户输入的数字输出相应的结果。
(4)编译并运行程序,验证多分支程序是否正确实现。
3. 结合if语句和switch语句,编写一个综合性的分支程序(1)在主函数中,定义两个变量num和score。
(2)使用scanf函数分别获取用户输入的数字和分数。
(3)使用if语句判断数字是否在1到7之间,并使用switch语句根据分数输出相应的评价。
(4)编译并运行程序,验证综合性分支程序是否正确实现。
五、实验结果与分析1. 使用if语句实现简单的分支程序当用户输入分数为85时,程序输出“优秀”;输入分数为70时,程序输出“良好”;输入分数为60时,程序输出“及格”;输入分数低于60时,程序输出“不及格”。
2. 使用switch语句实现多分支程序当用户输入数字1时,程序输出“一”;输入数字2时,程序输出“二”;以此类推,直到输入数字7时,程序输出“七”。
单片机实验9 多分支程序设计
实验9 多分支程序设计
1、实验内容
用P1.0、P1.1控制流水灯的变化
P1.0、P1.1=00 灯全灭
P1.0、P1.1=01 单灯亮左循环
P1.0、P1.1=10 单灯亮右循环
P1.0、P1.1=11 双灯亮左循环
灯亮的时时为1秒。
用软件延时实现。
*用T0定时选作。
2、实验步骤
1)打开PV32编程序。
汇编正确进入调试界面。
否则修改程序重新汇编直到通过。
2)打开P0、P1窗口给
3)调试灯全灭、单灯亮左循环、单灯亮右循环、双灯亮左循环程序观察并记禄寄存器、
内存的变化。
判断程序是否正确。
若发现问题重返编辑界面,修改、存盘、汇编。
返回调试界面调试通过。
4) 设断点调试主程序观察并记禄寄存器、内存的变化。
判断程序是否正确。
若发现问
题重返编辑界面,修改、存盘、汇编。
返回调试界面调试通过。
首先将P1.0、P1.1置00观察P2窗口灯是否全灭,然后改变P1.0、1.1的设置观察流水灯运行是否正确。
5)流水灯运行中改变P1.0、1.1看流灯能否随之变化。
若执行正确程序通过。
否则在每
个流水子程序中加入读P1口散转子程序。
3.实验报告
1.写出主程序流程图、子程序流程图、程序清单
2.根据记渌数据给程序加注解
3.调试心得。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微机实验》报告
实验名称__________________ 分支程序设计实验______________________ 专业班级______________ 姓名 _________ 学号_______________ 序号
联系方式_______________
一、任务要求
熟练掌握KeilC环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行10 口的使用。
1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果丫也存于外部RAM单元,请按要求编写程序。
X2当X狂40
丫 =』X /2 当20 cX <40
X 当X <20
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
P
3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):
a. 实现4位十进制加、减1计数,千位、百位由P1 口输出;十位、个位由P2 口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3 口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路
1. 分段函数设计
对于第一个任务,相当于设计一个分段函数程序,根据变量X 的
值所处的区间进行相应的计算。
由学过的知识知道,可利用比较转移指令CJNE来判断X是否等于临界值20,40,若不等,再根据执行CJNE 指令后的进位位CY的值来判断X与临界值的的大小关系,易知CY=0 则X大于临界值,CY二侧X小于临界值;如此,再进行相应的计算。
另外,除法计算中可能产生余数,商和余数应该分开存储,若乘方运算结果大于255,高八位与低八位应分开存储。
2. 24 小时制时钟程序
本程序须可以构建两部分循环。
首先构建一个三重循环实现“一秒延时”,循环体利用NOP W令(单字节指令,1 g )经多次循环达到
延时一秒的效果。
再利用已经构建好的“一秒延时”部分,设计计时系统的三重循环,秒(0-59)、分(0-59)、时(0-23)。
需要注意的
是,在小时、分、秒达到59 时,下一次应该为零。
程序运行时修改P3.0 的值可以实现暂停和继续的功能。
3. 加一减一程序
先初始化P1和P2,然后当P3低四位均为0作为开始计数的标
志,每次计数中插一个延时程序。
P3.7 为0 时进行加 1 计数:先把低2位从P2中取出至A,对A进行ADD加一计数并进行十进制修正,然后存进P2;再把高2位从P1取出至A,对A进行ADDC勺加进位操作并十进行进制修正,然后存进P1。
P3.7 为 1 时进行减一计数:只需改用
ADD指令加上1的补码即可,高2位在第二位为99时进行同样的操作,最后分别用P1和P2输出高2位和低2位。
即可实现所需功能。
三、资源分配
1. 分段函数
根据题目的条件,首先,设该8位无符号数为30H,把片外地址
4000H分配给它,把片外地址4001H和4002H分配给经分段函数计算得到的结果丫。
按位取反计算结果存于4001H单元,而除法计算结果的商与余数和乘方计算中结果的高、低八位分开存储于4001H-4002H 单元。
用寄存器A,B 来存放在乘除运算中所得的中间结果。
2. 二十四小时制时钟
工作寄存器R0 R1、R2分别用于秒、分、时循环次数的设定,R3 R4分别用于分与时的循环计数,R5-R7用于“一秒延时”中三重循环的循环次数设定。
秒、分、时数值分别由P2、P1、P0端口输出。
3. 加、减1 计数程序:
将十进制数的千位数和百位数存于P1,将十进制数的十位数和个位数存放于P2,P3.0 至P3.3 为是否进行计数的 4 个控制位,P3.7 为选择加一或减一的计数方式的控制位;R3, R4, R5为计数中的延时程序指定循环次数。
四、流程图
X赋值
A —X
设置数据指针
(DPTR — A
存X于片外RAM
CY^ 1?
_______ w 1.分段函数开始
N
N 2.时钟程序
CY^ 0 (4001H) —
A
C仔1?
Si-
Y=X 2
(4001H) —A
(4002H) —B
A 工
40?
结束
Y=/X
时钟计数,R2加1 DH A
R2J 0 P0 J 0
P0 J A R2=24 ? —
五. 源代码 开始 PO J 0 P1 J 0 P2 J 0 P3 J 0 P3.0=0 ?
P2 J A
R1J 0 P1 J 0
1. 分段函数
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A, #30H ;将8 位无符号数赋给A
MOV DPTR, #4000H; 定义数据指针
;将X存于片外RAM
MOVX @DPTR, A
将进位位清零
CLR C ;
;将A与14H比较,若不等于14H,跳转至KIND2
KIND1:CJNE A, #14H, KIND2
;对A中内容取反
OUT1: CPL A
; 定义数据指针
MOV DPTR, #4001H
MOVX @DPTR, A; 将计算结果存于片外地址4001H
SJMP DONE
KIND2:JNC KIND3;判断进位位CY是否为0,若为0,跳转至KIND3 SJMP OUT1; 否则跳转至OUT1
KIND3:CLR C; 将进位位清零
CJNE A,#28H, KIND4;将A中内容与28H比较,若不等于28H,跳转至KIND4 OUT2: MOV B,A;将A中内容赋给B
MUL AB;计算X的平方,将结果高八位存于B,低八位存于A MOV DPTR, #4001H; 定义数据指针
MOVX @DPTR,A; 将结果低八位存于片外地址4001H
INC DPTR; 数据指针加一
MOV A,B;将B中内容赋给A
MOVX @DPTR,A; 将结果高八位存于片外地址4002H
SJMP DONE
KIND4:JNC OUT2; 判断进位位是否为0,若为0,跳转至OUT2 SJMP OUT3; 否则跳转至OUT3
OUT3: MOV B,#02H
DIV AB;计算X/2,将商存于A,余数存于B
MOV DPTR,#4001H 定义数据指针
MOVX @DPTR,A ; 将商存于片外地址 4001H INC DPTR ; 数据指针加 1 MOV A,B
MOVX @DPTR,A ; 将余数存于片外地址 4002H
SJMP DONE
DONE: SJMP $
END
; 时钟位清零 ; 分钟位清零 ; 秒钟位清零 ;P3.0 为低电平开始计数,高电平停止计数 ;P2 的值存入 R2 秒钟达到 60 继续,不足 60 跳转 ; 秒钟清零 ; 分钟位加 1 ;
分钟位改为BCD 码 ;P1 的值存入寄存器 R1 ; 分钟达到 60 继续,不足 60 跳转 ; 分钟清零2. 时钟程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0,#00H
MOV P0,#00H
MOV P1,#00H
MOV P2,#00H
START: JB P3.0,START
MOV R2,P2
CJNE R2,#60H,DEL MOV P2,#00H
MOV A,P1
ADD A,#01H
DA A
MOV P1,A
MOV R1,P1
CJNE R1,#60H,DEL MOV P1,#00H
MOV A,R0
ADD A,#01H
DA A
MOV R0,A
MOV P0,A
CJNE R0,#24H,DEL
MOV P0,#00H
MOV R0,#00H DEL: MOV R7,#24
LOOP1: MOV R6,#61
LOOP2: MOV R5,#170
LOOP3: NOP
NOP
DJNZ R5,LOOP3
DJNZ R6,LOOP2
DJNZ R7,LOOP1
MOV A,P2
ADD A,#01H
DA A
MOV P2,A
SJMP START
END ; 时钟位加1
;时钟位改为BCD码
; 时钟达到24 继续,不足
; 时钟位清零
; 延时程序
; 秒钟位加1
24 跳转
3. 加一减一程序
ORG 0000H
LJMP MAIN
ORG 0100H
MOV P1,#00H MAIN:
MOV P2,#00H ;P1 端口置零;P2 端口置零。