单片机实验二
单片机实验二 拆字程序 实验报告

ORG 30H
00H
00H
30H
MOV A,30H
00H
30H里的数
30H里的数
ANL A,#0FH
30H里的数
高四位清零,低四位不变
高四位清零,低四位不变
MOV 22H,A
22H里的数
A高四位清零,低四位不变
A高四位清零,低四位不变
MOV A,30H
A高四位清零,低四位不变
30H里的数
30H里的数
将累加器A内容送片内RAM的20H单元
赋值:A=30H
将累加器A的高低位互换
将互换高低位后的累加器A高四位清零,低四位不变
将累加器A内容送片内RAM的21H单元
结束
单步运行程序,填写下论分析值
实际运行结果值
ORG 00H
00H
00H
00H
LJMP STAR
00H
00H
SWAP A
30H里的数
30H里的数高低位数转换
30H里的数高低位数转换
ANL A,#0FH
30H里的数高低位数转换
高四位清零,低四位不变
高四位清零,低四位不变
MOV 21H,A
21H里的数
A里面的数
A里面的数
SJMP $
00H
00H
00H
END
00H
00H
00H
思考
如何用断点方式调试本程序。
把光标指向语句左边,然后单击,会出现一个符号。同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
佛山科学技术学院
实验报告
课程名称实验项目拆字程序
专业班级姓名学号
单片机实验多字节加减法

实验二实现多字节加(减)法一、 实验目的:a)熟悉单片机指令系统,b)学会用汇编语言编写计算程序二、 实验内容:(一)实验要求:正确建立工程文件、编写程序,会利用keil进行程序调试并观察运行结果。
z基本要求:编写程序,将存放在内部RAM起始地址为20H和30H的两个3字节无符号相加,结果存放在内部RAM单元70H、71H、72H中(低位对应低字节)。
数据要求初始化:参考将20H和30H分别存放两个三字节的无符号数333333H和222222H。
z提高要求:将基本要求中的“相加”改成“减法”,其它要求与基本要求相同,数据要求初始化:参考将20H和30H分别存放两个三字节的无符号数333333H和223344H。
编写相应的程序并给予适当的注释。
(二)实验基本步骤:1.打开Keil,新建工程:Project/New Project,输入工程名,并保存2.选项选择器件:Atmel 的89C513.新建程序文本,并另存为该文件为汇编文件格式: (1)“File/New”,(2) File/Save As/键入欲使用的文件名及后缀名,即“文件名.asm”。
再单击“保存”4.添加该文件该工程:回到编辑界面后,单击“Target 1”前面的“+”号,然后在“SourceGroup 1”上单击右键,单击“Add File to Group ‘Source Group 1’”选择刚才新建的汇编文件。
5.在keil的汇编文件中输入程序代码,并编译,调试。
(1)写完代码后单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后(0个errors),(每次修改程序后都要重新编译下,才能生效)。
(2)再单击“Debug”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),点击RUN进行运行,或者按F11进行单步运行。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
51单片机实验-实验二 P1口输入、输出实验

实验二 P1口输入、输出实验一、实验目的学习Pl口的使用方法。
学习延时子程序的编写和使用。
进一步熟悉星研Star16L仿真器系统的操作,和EL-Ⅱ型通用接口板实验电路结构,学习使用PROTEUS仿真软件实现单片机的虚拟仿真。
掌握虚拟仿真与实际系统仿真的有机衔接。
二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。
三、实验内容1)P1口做输出口,经过74LS04反相器接八只发光二极管,编写程序,使发光二极管循环点亮。
2)(选作)P1口既做输入又做输出,在P1.0~P1.3口接四个平推开关,通过开关的不同位置向P1.0~P1.3输入不同的状态,然后利用输入指令读取所设开关状态,为验证输入结果的正确与否,将它们输出到P1.4~P1.7,经过74LS04反相器驱动发光二极管。
四、实验结果1)循环点亮八只发光二极管。
取P1.0口接出第一个二极管,以此类推,第八个接P1.7口。
Proteus 仿真图①循环左移,即从第一个二极管开始点亮到第八个二极管实验程序:ORG 0000HSTART:MOV R2,#8MOV A,#01H ;先让第一个发光二极管点亮LOOP: MOV P1,A ;从P1口输出到发光二极管LCALL DELAYRL A ;循环左移(从第一个发光二极管开始一直往下一个二极管)DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环LJMP START ;循环发光DELAY:MOV R5,#5 ;延时0.5秒子程序DEL1: MOV R6,#200DEL2: MOV R7,#126DEL3: DJNZ R7,DEL3DJNZ R6,DEL2DJNZ R5,DEL1RETEND仿真结果:发光二极管从D1开始发光,依次往下到D8,然后循环这一过程。
实验结果:发光二极管从第一个开始发光,依次往左到第八个,然后循环这一过程。
单片机原理及应用实验报告2

单片机原理及应用实验报告2单片机原理及应用实验报告2实验报告:单片机原理及应用实验一、实验目的1、了解单片机的基本工作原理;2、掌握单片机的编程方法和编写汇编语言程序的能力;3、学习单片机的应用实验。
二、实验原理单片机是一种集成电路,内部包含了中央处理器、存储器和各种输入输出端口。
单片机的工作原理是通过对输入信号的处理和对输出信号的控制来实现各种功能。
单片机的编程方法一般采用汇编语言编写程序。
汇编语言是一种低级语言,可以直接对单片机进行操作。
通过编写汇编语言程序,可以实现各种功能,如控制LED灯的亮灭、控制电机的转动等。
本次实验主要通过控制LED灯的亮灭来演示单片机的应用。
在实验中,我们将使用汇编语言编写程序,通过编程来控制LED灯的亮灭。
三、实验步骤2、编写汇编语言程序:打开编程软件,进入编程界面,编写程序代码;3、编译程序:将编写好的程序进行编译,生成机器码;4、烧录程序:用编程工具将编译好的机器码烧录到单片机中;5、连接电路:使用面包板将单片机与LED灯连接起来;6、测试程序:将单片机的电源接通,观察LED灯的亮灭情况。
四、实验结果与分析经过以上步骤,我们成功地编写了汇编语言程序,并将程序烧录到了单片机中。
在实验中,我们观察到LED灯根据程序的控制产生了相应的亮灭效果。
实验结果表明,通过编程可以实现对单片机的控制,从而实现各种功能。
单片机在嵌入式系统、自动控制系统、家电等方面有着广泛的应用。
五、应用实例1、家居智能化控制:通过编程控制单片机,可以实现对家电的智能化控制。
例如,可以根据日出日落时间控制窗帘的开闭,根据室内温度控制空调的开关等。
2、工业自动化:在工业生产中,单片机可以用来控制各种设备和机械,实现生产线的自动化控制。
例如,可以根据产品的规格和数量,自动调整机械的工作速度和工作时间。
3、智能交通系统:在交通领域,单片机可以用来控制信号灯、道闸等设备,实现交通流量的控制。
例如,可以根据道路的拥堵程度和车辆的行驶速度,调整信号灯的红绿灯时间,从而达到交通畅通的目的。
单片机课程实验二: 独立按键电路设计
单片机课程实验二:独立按键电路设计专业:通信工程学号:1610111183 姓名:石万里一、实验步骤:在实验一STC89C52单片机控制8个流水灯的实验的基础上进行此实验。
本次实验目标:通过两个独立按键控制流水灯的变化,使得8个流水灯代表的8进制数,在按下K1键后自动加一,按下K2键后,自动减一,采用下降沿外部中断触发。
电路图在实验一的基础上进行改装,让P32与P33各自通过一个独立按键接地,手绘电路图如图1.1所示:图1.1独立按键电路图1.2独立按键电路焊接成果实验程序编写烧录后,在keil软件中生产hex文件,再烧录到单片机芯片中,再给电路板上电即可。
之后是实验程序的编写,流水灯程序编写好并在学习板上测试成功后,即可把芯片放到自己焊接的电路板上上电测试电路板,如果成功即可找老师验收,不成功需要用万用表对电路板进行测试,测试时先把万用表档位调到欧姆档,测试本实验焊接的独立按键电路是否存在开路,并检查是否存在有未焊接的部分,是否有虚焊漏焊的情况,是否上电测试时晶振未安装,电路板检查后继续进行测试,然后再检查、测试,直到自己焊接的电路板功能正常。
若是在学习板上程序未成功,则需要对程序进行修改,重新编译、烧录,不断测试。
二、流水灯程序:org 0000Hljmp mainorg 0003hljmp jiayiorg 0013hljmp jianyiorg 100h main:setb ex0setb IT0setb ex1setb IT1setb eamov r4,#07hmov r3,#07hmov r2,#02hmov a,#0fehmov p1,aloop2:acall delay next: rl aacall delaymov p1,adjnz r4,next here: acall delay//mov a,p1rr amov p1,adjnz r3,heremov r4,#07hmov r3,#07hdjnz r2,loop2acall delay loop1:mov a,#07chmov p1,asjmp loop1 delay:mov r5,#19h delay1:mov r6,#19h delay2:mov r7,#0ffhdjnz r7,$djnz r6,delay2djnz r5,delay1 retjiayi:mov a,p1dec aacall delaymov p1,asjmp jiayiretijianyi:mov a,p1inc aacall delaymov p1,asjmp jianyiretiend三、实验总结:实验结果如下图所示:前五张图片是加一结果,最后两张图片是减一结果因为拍照速度太慢,故加一减一在图中看起来可能不连续,但程序完全正确,已经过实验验证,本人建议最好录视频作为作业上交此实验是建立在实验一的基础上进行的,故相对较为简单,只需要P32与P33各自加独立按键接地即可。
实验二 外部中断实验
实验二外部中断实验一、实验目的1.学会使用Keil μVision3和Proteus软件进行单片机汇编语言和C语言程序设计与开发。
了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式, 掌握中断功能的编程方法。
二、实验内容1.单片机的P1.0引脚连接LED指示灯D0。
单片机的P3.2引脚(INT0)连接按键开关K, 作为中断源, 每次按键都会触发INT0中断。
在INT0中断服务程序中将P1.0端口的信号取反, 使LED指示灯D0在点亮和熄灭两种状态间切换, 产生LED指示灯由按键开关K控制的效果。
三、实验程序ORG 0000H ;MCS-51复位入口AJMP MAIN ;转入主程序ORG 0003H ;INTO中断入口AJMP EX_INTO ;转入中断服务程序ORG 0100H ;主程序入口MAIN: MOV SP,#40H ;中断初始化设置堆栈SETB IT0 ;中断请求信号设置为边沿触发方式 SETB EA ;开放总中断SETB EX0 ;允许INTO中断HERE: SJMP HERE ;原地踏步(处理其他事务)等待中断到来ORG 0200H ;中断服务程序EX_INTO:CPL P1.0 ;改变指示灯状态RETI ;中断返回END四、实验原理图五、实验仿真及结果当开关断开时,LED指示灯D1熄灭,如图1所示:图1当按键开关接通时, LED指示灯D1点亮, 如图2所示:图2六、实验总结通过本次实验, 进一步熟悉了对Keil μVision3软件的操作, 另外还接触到了Proteus软件。
掌握了中断功能的编程方法, 加上两个上述软件, 使得单片机汇编语言得以仿真。
进一步深化了解和掌握MCS-51单片机的中断的相关知识, 包括中断的组成、工作原理、处理过程以及外部中断的中断触发方式。
单片机实验报告二 单片机IO口实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。
2.熟练掌握STC型开发板的使用方法和注意事项。
3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。
其中流水灯的变化形式多样。
(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。
根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。
图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。
单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。
单片机实验二 定时器实验程序
sbit L3=P0^7;
unsigned char keynum;
unsigned int lasttime=100;
bit bset=0;
unsigned char keyscan();
void display();
unsigned char getkey();
void set();
code unsigned char table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
sbit H1=P3^6;
sbit H2=P3^7;
sbit L1=P0^5;
void main()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
P1M1=0x00;
P1M0=0xff;
while(1)
{
keynum=keyscan();
display();
set();
}
}
void timer0() interrupt 1
{
P1=0X00;
W1=1;
W2=0;W3=1;W4=1;
P1=table[(unsigned char)(lasttime%1000/100)]|a;
}
else if(ct1<60)
{
P1=0X00;
W2=1;
W3=0;W4=1;W1=1;
P1=table[(unsigned char)(lasttime%1000%100/10)]|a;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 循环与分支程序设计
一、实验目的
1. 掌握循环分支程序的编写和调试方法
2. 学会调用子程序及延时程序的编写和应用
3. 掌握单片机源程序的编辑、汇编、调试运行全过程
二、实验任务
1. 运用条件分支及循环、延时子程序编写一程序、计算)0(/≠=N N M Y 的值。
其中Y 的值存放在30H 单元,M 值存放在31H 单元,N 值存放在32H 单元。
三、实验要求
1. 计算Y 的结果,设计三个指示灯,分三种处理结果指示:
1) 当Y 为整数时,直接存放商后,延时1秒后结束
2) 当Y<1时,余数调用四舍五入子程序后存放商,结束
3) 当Y>1时,余数调用四舍五入子程序后存放商,结束
四、实验步骤
1. 根据程序流程图写出汇编程序
2. 使用TKS 或KEIL 编辑器生成汇编程序
3. 对源程序进行编译,反复调试直至编译无错误
4. 正确使用调试工具调试程序
5. 检查程序运行结果。
五、程序流程
六、实验报告要求与讨论
1. 编写循环分支程序的注意事项
2. 调用子程序能达到什么效果
3. 总结编程调试过程中出现的问题和解决的办法。