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

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
思考
如何用断点方式调试本程序。
把光标指向语句左边,然后单击,会出现一个符号。同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
佛山科学技术学院
实验报告
课程名称实验项目拆字程序
专业班级姓名学号
单片机实验报告

单⽚机实验报告单⽚机实验报告姓名学号时间地点实验题⽬软件开发环境和简单程序设计⼀、实验⽬的1. 学习I/O⼝的使⽤⽅法。
2. 学习延时⼦程序、查表程序的编写和使⽤。
⼆、实验主要仪器及环境PC机、W A VE软件、仿真器+仿真头、实验板、电源等。
三、实验内容1、P0⼝做输出⼝,接⼋只LED,编写程序,使LED循环点亮,间隔0.5秒。
2、P1.0--P1.7作输⼊⼝接拨动开关S0--S7;P0.0--P0.7作输出⼝,接发光⼆极管L1—L8,编写程序读取开关状态,将此状态在对应的发光⼆极管上显⽰出来,同时将开关编号(0—7)显⽰在LED数码管上四、实验步骤1、先编写好程序并通过伟福仿真软件调试。
2、将编好的程序通过仿真器掻到实验板上进⾏相应的实验。
五、实验程序流程框图、实验程序1. ORG 0000HAJMP MAINMAIN: MOV A,#01H;置初值LOOP: MOV P0,A ;数据输出RL A ;左移⼀位ACALL DELAYSJMP LOOPDELAY:MOV R0,#10 ;延时0.5sK1:MOV R1,#125K2:MOV R2,#200K3:DJNZ R2,K3DJNZ R1,K2DJNZ R0,K1RETP0⼝循环点灯框图AJMP STARTORG 0030HSTART: MOV DPTR,#TABLESETB P1MOV P2,#00HMAIN: MOV A,P1 ;读P1⼝值CJNE A,#0FFH,LOOP;判断是否有输⼊SJMP MAINLOOP: MOV P0,AMOV R0,#00HLOOP1:RRC AJNC LOOP2INC R0 ;计数AJMP LOOP1LOOP2:MOV A,R0MOVC A,@A+DPTR ;查表MOV P2,A ;P2⼝输出AJMP MAINTABLE:DB 03FH 06H 5BH 4FH 66H 6DH 7DH 07HP1⼝输⼊/输出框图六、实验程序分析、讨论及测试1、实验1欲改变LED循环的⽅向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算⽅法。
单片机实验之定时器计数器应用实验二

、实验目的1 、掌握定时器/计数器计数功能的使用方法。
2 、掌握定时器/计数器的中断、查询使用方法。
3 、掌握Proteus 软件与Keil 软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
、设计要求1 、用Proteus 软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满 100个脉冲,则取反P1.0 口线状态,在P 1.0 口线上接示波器观察波形。
2、用Proteus 软件画出电路原理图,单片机的定时器/计数器以中断方式工 作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满 200个脉冲, 则取反P1.0 口线状态,在P 1.0 口线上接示波器观察波形。
通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD 初值的计 算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。
七、思考题1、利用定时器0,在P1.0 口线上产生周期为200微秒的连续方波,利用定 时器1,对P1.0 口线上波形进行计数,满50个,则取反P1.1 口线状态,在P 1.1 口线上接示波器观察波形。
tJI-JTTALlRSTIPO 1 Z^Cil POiPD 3/jfiD3 IPCLW/MH FD-5/^CB”血P2 O/jtS PNUMa P 2 .2/AJOPI F3JD/RKDP1 且1门池F1 2P1 .3P3^/|NT1 卩11 .4P3.4Z1D P1.5 P3 .5fT1 尸1P3.0AA/RP1I.7 P3.?/RD17三、电路原理图 18HQAT69C52P 2 .4/A12P2 5/A13 P2P2 .7XA1«5蝕丘2Q 37答:程序见程序清单四、实验程序流程框图和程序清单1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,MAIN: MOV IE, #00HMOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1LOOP: JNB TF1, LOOP CLRTF1 CPL P1.0 AJMP LOOP ENDC 语言程序:#in elude <reg52.h> sbit Y=P1A0; void mai n() {EA=0; ET1=0; TMOD=0x60;TH1=0x9C;计数数值初始化中断断 艙化!l[启动 =时器1 器一、r动 启N箱 * 1溢断清计数溢出标志—1 ~ P1.(口线取反TL 仁 0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数, 每计满200个脉冲,则取反P1.0 口线状态。
单片机 实验2-外部中断程序设计-中断按键按下次数计数数码管显示-硬件和程序设计参考

硬件电路参考如下:程序参考如下:#pragma sfr#pragma interrupt INTP0 LED_INTP0 /* 定义使用INTP0中断,中断函数名LED_INTP0*/ #pragma di /*禁止使用中断功能声明*/#pragma ei /*允许使用中断功能声明*//*数码管编码数组*/unsigned char LED_light[10]={0x30,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x3F}; unsigned char j=0; /*按键次数变量*/void hdinit() /*硬件初始化*/{PM1=0; /*P1口输出数码管字型码,所以设置为输出*/PU1=0XFF; /*由于P1口直接驱动数码管显示,为增大驱动,设置为内部上拉*/PM12.0=0; /*P12.0口线要作为中断多功能,设置为输出和内部上拉 */PU12.0=1;PIF0=0; /*中断请求标志,没有中断请求*/PMK0=0; /*中断屏蔽标志,允许中断*/PPR0=1; /*中断优先级,低优先级*/EGP.0=1; /*与EGN组合,上升沿有效*/EGN.0=0;}void main (void){DI(); /*首先做准备,禁止中断*/IMS=0XCC;IXS=0X00;hdinit();EI(); /*准备完成,允许中断*/while(1){ /*啥也不干,就等待中断,仅是在这个实验中使用中断,实际不是这样/*}}__interrupt void LED_INTP0() /*中断函数*/{ P1= LED_light[j]; /*P1赋值,数码管显示相应数值*/j++; /*按键次数加一*/if(j==10) /*如果按键次数达到十次,按键计数归0*/{j=0;} }思考: 如果用两位数码管,从0—99循环计数又该怎样设计硬件和软件呢?。
单片机汇编实验报告

单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。
2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。
通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。
4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。
2.打开开发板电源,确保电源工作正常。
步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。
2.创建一个新的汇编语言项目,命名为“experiment.asm”。
3.编写汇编程序,实现所需的功能。
例如,可以编写一个简单的程序,使LED灯闪烁。
步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。
2.将生成的二进制文件烧录到单片机中。
可以使用烧录软件或者编程器完成这一步骤。
步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。
例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。
步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。
2.按下开发板上的复位按钮,使单片机开始执行程序。
3.观察实验现象,并记录下实验结果。
5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。
在运行实验时,LED灯按照程序的要求进行闪烁。
这表明我们的实验设计和编程是正确的。
6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。
通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。
同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。
7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。
单片机实验程序及流程图

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.程序清单及程序流程框图ORG 0000H Array LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR AA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10HA2: MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10HA3: MOV A,@R1MOVX @DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPHA4: POP DPHPOP DPLMOVX A,@DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4 MOVX @DPTR,A INC DPTRMOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800H MOV R2,#10HA5: MOVX A,@DPTR MOV @R0,AINC R0 INC DPTR DJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEND《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.实验电路四.程序清单及流程图程序一ORG 0000HLJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01HCLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, ACLR 00H LJMP NT IPTO: MOV TH0,#3CH MOV TL0,#0B0HDJNZ R1, TIOMOV R1, #14HSETB 00HTIO: RETIEND程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。
单片机软件实验双字节BCD码加法

实验二双字节BCD码(十进制数)加法一、实验目的熟悉8086汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD 码,了解如何调用系统提供的子程序。
二、实验内容从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。
三、实验框图双字节BCD码加法程序框图四、实验步骤1、连线说明:2、在F4区的键盘上输入4位被加数、加数3、结果显示在F4区的数码管上五、程序清单.MODEL TINYEXTRN Display8:NEAR,GetBCDKey:NEAREXTRN F1:BYTE.STACK100.DATABUFFER DB8 DUP(?)augend DB 2 DUP(?);被加数addend DB 2 DUP(?);加数.CODESTART:MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV F1,0 ;先清除显示,再接收键输入START1:LEA DI,augendMOV CX,4 ;按键次数CALL GetBCDKey;得到双字节十进制数(被加数)MOV F1,1;接收到第一个键,才清除显示LEA DI,addendMOV CX,4 ;按键次数CALL GetBCDKey;得到双字节十进制数(加数)MOV AL,augendADD AL,addend;低位DAAXCHG AL,AHMOV AL,augend + 1ADC AL,addend + 1;高位DAAXCHG AL,AHMOV BL,0ADC BL,0 ;进位CLDLEA DI,BUFFER;存放显示结果CALL B1toB2;低位MOV AL,AHCALL B1toB2;高位MOV AL,BLSTOSBMOV AL,10H;最高三位消隐STOSBSTOSBSTOSBLEA SI,BUFFER+4MOV CX,4CALL BlackDisplay ;将高位0消隐LEA SI,BUFFERCALL Display8JMP START1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2PROC NEARPUSH AXAND AL,0FHSTOSBPOP AXAND AL,0F0HROR AL,4STOSBRETB1toB2ENDPBlackDisplay PROC NEARSTDMOV DI,SIBlackDisplay1:LODSB ;将高位0消隐CMP AL,0JNZ ExitMOV AL,10HSTOSBLOOP BlackDisplay1Exit:CLDRETBlackDisplay ENDPEND START。
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,然后循环这一过程。
实验结果:发光二极管从第一个开始发光,依次往左到第八个,然后循环这一过程。