
单片机原理与应用实验指导书.docx
36页《单片机原理及应用》实验指导书《单片机原理及应用》实验指导书目 录实验一无符号双字节乘法运算子程序实验二BCD码及ASCII码转换实验三P1 口实验实验四 定时器实验一循环彩灯实验实验五数码显示实验实验六A/D转换实验1《单片机原理及应用》实验指导书实验一无符号双字节乘法运算子程序一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件熟悉汇编语 言编程二、实验设备:EL-8051-III型单片机实验箱三、实验内容:(1)在(R2R3)和(R6R7)中输入双字节无符号整数2)将(R2R3)和(R6R7)中双字节无符号整数相乘,积存入 R2R3R4R5 中3 )连续或单步运行所编程序o检查R2R3R4R5中的内容是正确 四、实验原理:R6 R7 R2 R3R4 R5B AB AB A (B) R2 (B+B+A) R3 (R4+A+A) R4 R5五、实验调试1、打开Keil,新建Keil项目;2、选择CPU类型为ATMEL中的AT89C52单片机;3、根据流程图新建汇编源程序(*. asm),并保存;4、在项目管理器窗口 (project windows)中,将新建的ASM源程序添加到"source group 1” 中;5、在 Keil 中选择 “project" -〉"build target” 菜单,编译汇编源程序,如有错,修改后重新编译;6、选择“debug"->"start/stop debug session” 菜单,进入程序 调试环境;7、按“F11”键,单步运行程序,观察"project windows"中,寄 存器R0~R7的变化情况,最后验证R2R3R4R5无符号双字节相差的 结果是否正确(可和程序/附件计算器的相乘结果对比)。
六、参考程序MULD: M0VA:R3 ;计算 R3 乘 R7M0VB:R7MUL ABMOV R4rB ;暂存部分积MOV R5,AM0VA,R3 ;计算 R3 乘 R6M0VB:R6MULABADDAR4 ;累加部分积MOV R4.A •CLRAADDCMOV R3: AM0VA.R2 ;计算 R2 - R7MOV B:R7MULABADDA:R4 ;累加部分积MOV R4,AM0VA.R3ADDC A:.BMOV R3: ACLRARLCA 2XCH A:R2 ;计算 R2 乘 R6MOV B.R6MUL AB《单片机原理及应用》实验指导书实验二BCD码及ASCII码转换程序 一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件熟悉汇编语 言编程二、实验设备:EL-8051-III型单片机实验箱三、实验内容:将本人的班号学号以压缩的BCD码的形式由低到高存放在50H开 始的单元中,如10050941班,学号为01的同学,将10 50H.05 51H、 09 52H、41 53H、01 54H然后编程将50H~54H中压缩的BCD码 转换成ASCH码,并由低到高存放在60H开始的单元中。
四、参考程序MAIN:MOVSP=30H;设置栈指针MOV50H=10H:把字号放入50H的存储单元中MOV51H=05H iMOV52H 尸9HMOV531VH1HMOV54耳RIHMOVRO#50HMOVRL# 60HMOVR2=05H:BCD码字节数MAIXL:MO\A: @R0MOVB:ASWAPAANLA;=0FHACALLBCDASCMOV@RLAMOVA.BANLA:=0FHACALLBCDASCINCRlMOV@RLAINCRlINCRODJNZR2AIAIN1snip$BCDASC: INCAMOVCA,@A-PCRETDB30H,31H,32H,33H,34H,33H,36H,37H,38Hs39 HEND实验三 P1 口实验 一、实验目的:1. 学习P1 口的输出输入使用方法2. 学习延时子程序的编写和使用二、实验设备:EL-8051-III型单片机实验箱《单片机原理及应用》实验指导书三、实验内容:1. P1 口做输出口,接八只发光二极管,编写程序,使发光二极 管循环点亮2. P1 口做输入口,接八个按纽开关,以实验箱上74LS273做输 出口,编写程序读取开关状态,在发光二极管上显示出来。
四、实验原理:P1 口为准双向口,P1 口的每一位都能独立地定义为输入位或输 出位作为输入位时,必须向锁存器相应位写入“1”,该位才能作为 输入8031中所有口锁存器在复位时均置为“1”,如果后来在口锁 存器写过“0”,在需要时应写入一个“1”,使它成为一个输入可以用第二个实验做一下实验先按要求编好程序并调试成功后, 可将P1 口锁存器中置“0”,此时将P1做输入口,会有什么结果再来看一下延时程序的实现现常用的有两种方法,一是用定时 器中断来实现,一是用指令循环来实现在系统时间允许的情况下可 以采用后一种方法本实验系统晶振为6. 144MHZ,则一个机器周期为124-6. 144us即 1H-O.512uso现要写一个延时0. 1s的程序,可大致写出如下:MOV R7, #X (1)DELI: MOV R6, #200 (2)DEL2: DJNZ R6, DEL2 (3)DJNZ R7, DELI (4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需 要1 ・ 0. 256us,现求出X值:14-0. 256+X (14-0. 256+200 X 14-0. 256+14-0. 256) =0. 1X106指令(1) 指令(2) 指令(3) 指令(4)所需时间 所需时间 所需时间所需时间X=(0. 1 X X 107 4- 0. 256)/ ( 1 4- 0. 256+200 X 1 0. 256+1 4- 0.256) =127D=7FH经计算得X=127。
代入上式可知实际延时时间约为0.100215s,己 经很精确了五、实验原理图:《单片机原理及应用》实验指导书P1 口输入实验六、实验步骤:执行程序1 (Tl_l. ASM)时:Pl. 0〜PL 7接发光二极管L1〜L8执行程序2(T1_1.ASM)时:P1.0-P1. 7接平推开关K1〜K8; 74LS273的00〜07接发光二极管L1〜L8; 74LS273的片选端CS273 接CS0 (由程序所选择的入口地址而定,及CS0〜CS7相应的片选地 址请查看第一部分系统资源,以后不赘述)七、程序框图:循环点亮发光二极管#通过发光二极管将P1 口的状态显示八、参考程序:1、循环点亮发光二极管(T1_1.ASM)ORG OOOOHLJIrtP STARTORG 0030HLOOP: RL A;左移一位,点高下■一个发光二极管2、通过发光二极管将P1 口的状态显示(T1_2.ASM)OUT PORT EQU OCFAOHORG OOOOHLJNP STARTORG GO30H;复位Pl 口为输入状态;读Pl 口的状态值入累加器A;将输出口地址赋给地址指针DFTR;将累加器A的值赋给DPTO指向的地址;继续循环监测端口 P1的状态START: NOV Pl,MOV A, PlNOV DPTRj*OUT_PORTMOVX ©DPTR.AJNP STARTEDID实验四定时器实验 循环彩灯实验一、实验目的:《单片机原理及应用》实验指导书1 .学习8031内部计数器的使用和编程方法。
2 .进一步掌握中断处理程序的编写方法二、实验设备:EL-8051-III型单片机实验箱三、实验原理:1 .定时常数的确定定时器/计数器的输入脉冲周期及机器周期一样,为振荡频率的 1/120本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5 秒延时,要在定时器1中设置一个时间常数,使其每隔0. 1秒产生一 次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现 0.5秒延时时间常数可按下述方法确定:机器周期=12+晶振频率=12/ (6 X 106)=2us设计数初值为X,则(2e+16-X) X2Xio=O. 1,可求得X=15535化为十六进制则X=3CAFH,故初始值为TH1=3CH, TL1=AFH2 .初始化程序包括定时器初始化和中断系统初始化,主要是对IP、IE、TCOX.TMOD的相应位进行正确的设置,并将时间常数送入定时器中由于只有定时器中断,IP 便不必设置3 .设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新 送入定时器中,为下一次中断做准备主程序则用来控制发光二极管 按要求顺序燃灭四、实验题目白白山自亩自白日由8031内部定时器1按方式1工作, 即作为16位定时器使用,每0.1秒钟T1 溢出中断一次。
P1 口的P1.0〜P1.7分别 接发光二极管的L1〜L8要求编写程序 模拟一循环彩灯彩灯变化花样可自行 设计例程给出的变化花样为:①L1、 L2、…L8依次点亮;②LI、L2、・・・L8依 次熄灭;③LI、L2、…L8全亮、全灭P1 口《单片机原理及应用》实验指导书各时序间隔为0. 5秒让发光二极管按以上规律循环显示下去五、实验电路:六、实验步骤:P1.〜P1. 7分别接发光二极管L1-L8即可七、参考程序:OUTPORT EQU BGFB0H ORC OO0OHAJMP MAINORG063 OHMOU;首显示担MOUR1 逮 63H律3是偏移量,即从基址寄存器到表首的距离MOUR0,«5H;的是珏勒直MOUTM0D,#10H;讦皴&置为方式1MOUTL1,H0AFH;装入端常数MOUTH1,#03CHORLIE 述88H;CPU中断开放标志位鬻定时器 ;燧山中断允许位均亶位SETBTR1;开始计数CJNERO,#08,DISPMOURG 述5H ;R时数屋一个周期,重置初值INCR1;表地址褊移量加1CJHER1,#31H,LOOP2MOUR1,U03H;如到表尾,则重置邮修量初值MOUA,R1;从表中取显示阴关祟痂器MOUCfi,OA*PCORG 001BH AJMP INTSTART:LOOP1:LOOP2:JMP DISPDISP:。












