1、实验一用单片机点亮一只发光二极管LED黄 石 理 工 学 院机电工程学院实 验 指 导 书课程名称:单片机原理与接口技术实验学时: 20 学时适用专业: 机械制造及自动化、机械设计与制造、汽车运用技术、 电子仪器仪表与维修模具设计与制造、制冷与冷藏专业先进制造技术实验室2005-3-10实验一 单片机系统及实验开发系统的认识一、实验目的1、了解单片机最小系统。2、了解DVCC仿真系统使用方法3、掌握P1口的输入/输出使用方法4、编程的初步知识二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、了解DVCC仿真系统的的部分硬件(8031、74LS373、2764)和基本使用方法。2、了
2、解程序编辑、汇编、修改、连接和运行的过程。3、将P1.0P1.3作为输入接K0K3,P1.4P1.7作为输出接LED0LED3,由K0K3控制LED0LED3的状态。四、实验线路五、实验步骤1、由教师介绍DVCC仿真系统的的部分硬件的实物与作用。2、在教师的指导下编辑、保存下列程序。ORG 0000H ;伪指令ORG,说明机器码存储的首地址LOOP: MOV P1,#0FH ;数据传送指令,将0FH这个数传送到P1中,定义P1.0-P1.3为输入状态。 MOV A, P1 ;将P1.0-P1.3引脚的状态和P1.4-P1.7锁存器的数传送到A中。ANL A,#0FH ;逻辑运算指令,寄存器A中
3、的数与0FH进行“与”运算。JZ OVER ;条件转移指令,若(A)=00H,程序转移到标号OVER处执行SWAP A ;高低字节交换指令, ACC.0-ACC.3与ACC.4-ACC.7交换。MOV P1,A ;将寄存器A中的数传送到P1,并由P1.4-P1.7输出到LED。 SJMP LOOP ;无条件转移指令,程序转移到标号LOOP处执行。OVER: SJMP $ ;无条件转移指令,程序转移到标号OVER处执行,即原地等待。END ;伪指令END,表示程序结束。3、编译、修改、连接上述程序,记录编译过程中提示的错误和修改的方法。常见的错误有:数字0与字母O混淆。MOV P1, #0FH写
4、成MOV P1, #OFH掉了逗号。如MOV A,P1写成MOV A P1 助记符写错。如ANL A,#0FH 写成AML A,#0FH标号后面的冒号掉了。如OVER: SJMP $写成OVER SJMP $标号不一致。如SJMP LOOP写成SJMP LOPEND后面有空行。此时提示“”,修改方法是将光标放在END后面,不断地按“Delete”键。4、打开寄存器窗口、反汇编窗口,记录本程序的机器码,了解单字节指令、双字节指令和三字节指令的含义。5、将K0K3全部置“1”,单步执行本程序,依次将K0K3置“0”,第五次将K0K3全部置“0”,观察程序执行过程中寄存器A、端口P1和LED的变化。
5、了解指令首地址的含义和程序计数器PC的作用,了解是如何改变程序的流程。6、将程序MOV P1,#0FH改为MOV P1,#00H,再编译、连接、执行,观察结果有什么不同。六、整理实验记录并回答下列问题首地址机器码源程序寄存器LED状态(实心圆表示亮)第1次第2次第3次第4次0000H7401LOOP: MOV P1,#0FH(P1)=MOV A, P1(A)=ANL A,#0FH(A)=JZ OVER SWAP A(A)=MOV P1,A(P1)=SJMP LOOPOVER: SJMP $错误形式英文提示中文意义修改方法LOOP: MOV P1,#OFHOFH改为0FHMOV A P1AML
6、A,#0FHSJMP LOPOVER SJMP $END1、什么是51单片机最小系统。系统有哪三类总线?2、程序计数器PC的作用是什么,本实验中哪些指令实现程序的跳转。3、为什么说P1口是准双向I/O口? 4、简述单片机系统的工作过程。实验二 顺序结构程序设计一、实验目的1、顺序程序的编制;2、2、掌握算术运算方法及PSW标志位的变化规律;3、掌握查表程序3、初步了解堆栈的使用方法。二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、单步执行程序一,按要求记录指定寄存器的内容。2、将A中的16进制数转换为BCD码。百位数存R3中,十位和个位放在A中。3、查表求09的平方(运行10次,
7、将运行结果填入表中)四、程序清单程序一程序ABCYACOVP标志位变化的原因ORG 0000H00H00H0000系统复位值SETB CMOV A,#49HADDC A,#27HDA ASUBB A,#0A5HADD A,#2DHINC AADDC A,#95HDIV ABMOV B,#08HMUL AB程序二 ORG 0000H MOV A,#0FFH ; (A)=MOV B,#100 ; (B)=DIV AB ; (A)= (B)=MOV R3, A ; (R3)=MOV A,#10 ; (A)= XCH A, B ; (A)= (B)=DIV AB ; (A)= (B)= SWAP A
8、; (A)= (B)= ADD A, B ; (A)= (B)= SJMP $程序三ORG 0000H第一次第三次第九次第十次MOV A,#00H(A)= (SP)=START:PUSH ACC(A)= (SP)= (08H)=(A)= (SP)= (08H)=(A)= (SP)= (08H)=(A)= (SP)= (08H)=MOV DPTR,#TABMOVC A,A+DPTR(A)=(A)=(A)=(A)=POP ACC(A)= (SP)= (08H)=(A)= (SP)= (08H)=(A)= (SP)= (08H)=(A)= (SP)= (08H)=INC A(A)=(A)=(A)=(
9、A)=SJMP STARTTAB:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81H五、简答1、填写下表(无影响填,有影响填,确定值填1或0)指令POVACCYADDADDCSUBBMULDIVDA AINC、DEC2、简述PUSH、POP指令时堆栈如何变化?程序2为什么要用堆栈?实验三 分支程序与串行I/O口一、实验目的1、掌握比较数据大小的方法;2、掌握查表程序的编制方法;3、了解串行I/O口的用法二、实验设备DVCC仿真系统一套、计算机一台三、实验内容1、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数: 1 X0Y= 0 X=0 -1
10、 X0 2、K0、K1、K2、K3组成16进制开关,其状态数由串行口输出,且由74LS164转换为并行输出到共阴极LED上显示,试编写程序。四、实验线路 五、实验步骤1、分别用MOV 20H,#00H(80H、79H)运行方法1和2,注意执行CJNE A , #79H,NEG时,CY的变化,熟练掌握该指令的用法2、按实验线路接线,运行程序三,改变K0-K3的组合状态,观察LED的变化。掌握串行口输出的程序编制,熟练掌握指令MOVC A,A+PC在查表中的应用及偏移量的确定。六、程序清单程序一 方法1 MOV 20H,#00HMOV A,20HJZ ZEROJB ACC.7, NEGMOV 21
11、H, #01HSJMP OVERNEG: MOV 21H, #0FFHSJMP OVERZERO: MOV 21H, AOVER: SJMP $ END方法2MOV 20H,#00HMOV A,20HJZ ZEROCJNE A , #79H,NEGNEG: JC POSIMOV 21H, #0FFHSJMP OVERPOSI: MOV 31H, #01HSJMP OVERZERO: MOV 21H, AOVER: SJMP $ END程序二 方法1 ORG 0000H LOOP:MOV P1,#0FH MOV A, P1 ANL A,#0FH ADD A,#06H MOVC A,A+PC MO
12、V SBUF, A JBC TI, $ SJMP LOOP方法2 ORG 0000H LOOP:MOV P1,#0FH MOV A, P1 ANL A,#0FH MOV DPTR, #TAB MOVC A,A+DPTR MOV SBUF, A JBC TI, $ SJMP LOOPTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,7EH七、简答1、简述执行CJNE A , #79H,NEG时,CY的变化2、在程序一中为什么用那么多SJMP OVER指令?3、查表的两个指令是什么。有什么区别?应用指令MOV
13、C A,A+PC时,偏移量是如何确定。4、P3.0、P3.1分别输出什么信号?串行口输出的指令是什么,指令JBC TI, $是什么意思。实验四 循环程序与子程序调用一、实验目的1、掌握子程序的编写方法和调用过程3、2、掌握SJMP、AJMP、LJMP的使用方法3、掌握循环程序的编制二、实验设备DVCC仿真系统一套、计算机一台。三、实验内容1、在外部数据存储器0130H013FH和片内RAM 30H 3FH分别存放数据00H、01H0FH。2、在片内数据存储器20H23H中压缩BCD码拆成单字节BCD码依次存放到28H2FH中。四、实验步骤1、运行以下程序,观察子程序调用的过程,单步执行ACAL
14、L MULTWO后,堆栈有什么变化。单步执行RET后,堆栈又有什么变化。MOV R0,#20HMOV R1,#30HACALL MULTWOSJMP $MULTWO:MOV A,R0 MOV B,R1 MUL AB MOV R0,A MOV R1,B RET2、编释以下程序,记录英文错误提示,改变ORG 0080H,使编译通过,计算SJMP的偏移量ORG 0000H 英文错误提示 正确程序START:MOV A,#20H SJMP NEXT ORG 0080HNEXT: MOV A,#30H SJMP START END编释以下程序,记录英文错误提示,改变两句ORG XXXXH,使编译通过,且
15、两个差值最大。ORG 00F0H 英文错误提示 正确程序START:MOV A,#20H AJMP NEXT ORG 0100HNEXT: MOV A,#30H AJMP START END3、运行程序一、二,注意访问外部RAM和片内RAM指令的区别,观察R0、R1的变化。 五、程序清单程序一 方法1 ORG 0000HMOV P2,#01HMOV R7,#0FHMOV R0,#30HCLR ACLEAR1: MOVX R0,AMOV R0,AINC R0INC ADJNZ R7,CLEAR1SJMP $END方法2 ORG 0000HMOV DPTR,#0130HMOV R7,#0FHMOV
16、 R0,#30HCLR ACLEAR1:MOVX DPTR,AMOV R0,AINC R0INC DPTRINC ADJNZ R7,CLEAR1SJMP $END程序二ORG 0000HMOV R0,#20HMOV R1, #28HMOV R7, #04HLOOP:LCALL CZINC R0INC R1DJNZ R7, LOOPSJMP $CZ:MOV A,R0 PUSH ACC SWAP A ANL A,#0FH MOV R1,A INC R1 POP ACC ANL A,#0FH MOV R1,A RET END六、简答1、SJMP、AJMP和LJMP的区别。2、SJMP偏移量的范围是
17、,以 码的形式存放。计算方法是:rel= - 3、简述子程序调用的过程。实验五 中断方式控制LED一、实验目的1、初步掌握中断的概念2、掌握外部中断的方法3、掌握定时/计数初始化编程方法4、掌握中断服务程序的编制方法二、实验设备DVCC仿真系统一套、计算机一台三、实验内容1、当中断没发生时,8个LED按间隔发光。当P3.3 (INT1)为低电平时, 8个LED整体闪烁16次。2. 在P3.3 (INT1)发生中断后,8个LED整体闪烁16次;P3.2(INT0)中断, 4个LED循环发光16次。门P3.3(INT1)优先中断,观察两个中断顺序不同的结果有什么不同。3、用定时器T0用工作方式1实
18、现P1.0所控制的LED每秒钟闪烁一次。4、5个单脉冲, LED闪烁一次, 用工作方式22、四、实验线路P3.3 、P3.2接K0、K1,P3.4接单脉冲,P1接8个LED。五、实验步骤1、内容一(1)(开关置0立即置1,与开关置0不动有什么区别)(2)将程序中的CLR IT1改为SETB IT1再运行。观察发生中断时与第一次有什么不同。(开关置0立即置1,与开关置0不动有什么区别)(3)在中断服务程序中的PUSH ACC 和POP ACC前面加分号”:”再运行。观察发生中断时与第一次有什么不同。2. 内容二(1)在P3.3 (INT1)发生中断后, P3.2(INT0)立即中断;(2)在P3
19、.2 (INT0)发生中断后, P3.3(INT1)立即中断;(3)在SETB PX1前加分号,再比较一次。3、内容三调节什么参数,使LED每秒钟闪烁一次。4、内容四注意工作方式2的中断服务程序与工作方式0、1的区别。六、程序清单程序一 主程序 ORG 0000H AJMP MAIN ORG 0013H SJMP ZD0 ORG 0020HMAIN:CLR IT1 SETB EA SETB PX1 SETB EX1 MOV A,#0AAHHA1S1: MOV P1,A AJMP HA1S1DELAY:MOV R5,#0FFHDELAY1:MOV R4,#0FFH DJNZ R4,$ DJNZ
20、R5,DELAY1 RETORG 0060HZD0: CLR EA PUSH ACC PUSH 00H SETB EA MOV 00H,#10H MOV A,#0FFHLOOP:MOV P1,A ACALL DELAY CPL A ACALL DELAY DJNZ R0,LOOP CLR EA POP 00H POP ACC SETB EA RETIDELAY: MOV R5,#0FFHDELAY1: MOV R4,#0FFH DJNZ R4,$ DJNZ R5,DELAY1 RET程序二主程序 中断服务程序ZD0同程序一,ZD1如下:ORG 0000H AJMP MAIN ORG 0003H
21、 SJMP ZD0 ORG 0013H SJMP ZD1 ORG 0020HMAIN:SETB IT0 SETB IT1 SETB EA SETB PX0 SETB EX0 SETB EX1 MOV A,#0AAHHA1S1: MOV P1,A AJMP HA1S1ORG 0080HZD1: CLR EA PUSH ACC PUSH 00H SETB EA MOV R0,#10H MOV A,#0FFHLP: MOV P1,A ACALL DELAY CPL A ACALL DELAY DJNZ R0,LP CLR EA POP 00H POP ACC SETB EA RETI程序三ORG 0
22、000H AJMP START ORG 000BH AJMP TIME0 ORG 0030HSTART:CLR P1.0 MOV 30H,#00H MOV TMOD,#01H MOV TH0,# H MOV TL0,# H SETB EA SETB ET0 SETB TR0 SJMP $TIME0:PUSH ACC PUSH PSW INC 30H MOV A,30H CJNE A,#20,T_RET T_L1:CPL P1.0 MOV 30H,#0 T_RET:MOV TH0,# H MOV TL0,# H POP PSW POP ACC RETI END程序四ORG 0000HAJMP S
23、TARTORG 000BHCPL P1.0 RETI ORG 0030HSTART: CLR P1.0 MOV TMOD,#06H MOV TH0,#0FBH MOV TL0,#0FBH SETB IT0 SETB EA SETB ET0SETB TR0 SJMP $ END七、简答 程序一 程序二主程序ORG 0000H AJMP MAIN ORG 0013H SJMP ZD1 ORG 0020HMAIN:CLR IT1 SETB EA SETB PX1 SETB EX1 MOV A,#0AAHHA1S1: MOV P1,A AJMP HA1S1DELAY: MOV R5,#0FFHDELA
24、Y1: MOV R4,#0FFH DJNZ R4,$ DJNZ R5,DELAY1 RET六、结论1、中断的定义,51系列有哪几个中断源,它们的中断入口地址分别是什么2、简述中断的过程。 3、中断优先级由 寄存器控制。4、定时与计数有什么区别?5、T0或T1有哪四种工作方式?其定时常数如何计算?工作方式2在中断服务程序中,为什么不重装时间常数?八、九、十、实验线路十一、程序清单程序一: 程序二: 程序三 ORG 0000HCONT:MOV SP,#53H MOV TMOD,#05H MOV TH0,#00H MOV TL0,#00H SETB TR0CONT1:MOV R2,TH0 MOV R
25、3,TL0 LCALL CONT2 MOV R0,#79H MOV A,R6 LCALL PWOR MOV A,R5 LCALL PWOR MOV A,R4 LCALL PWOR LCALL DISP SJMP CONT1十二、结论实验六 并行接口8255控制交通灯一、实验目的了解8255芯片的结构及编程方法,学习交通灯控制的实现方法二、实验内容用8255做输出口,控制12个发光二极管亮灭,模拟交通灯管理。初始状态0为东西红灯,南北红灯。然后实现状态1-2-3-4-1的循环。状态1:东西绿灯,南北红灯;状态2:东西绿灯灭,黄灯闪烁5次,南北红灯;状态3:东西红灯,南北绿灯;状态4:东西红灯,南
26、北绿灯灭,黄灯闪烁5次。三、实验线路四、实验步骤1、根据设计要求,填写下表状态PB口值东南西北PC口值绿黄红绿黄红绿黄红绿黄红PB0PB1PB2PB3PB4PB5PC0PC1PC2PC3PC4PC5012亮灭34亮灭2、根据设计要求编写程序已知8255各端口地址如下:PA口:0FF28H、PB口:0FF29H、PC口:0FF2AH、命令口:0FF2BH3、调试和运行程序五、实验程序(编写时注意利用程序段的相似性,整段复制)ORG 0000H MOV SP,#60HMOV DPTR,# H;写命令字MOV A,# HMOVX DPTR,AS0:MOV DPTR,# H;PB口状态0MOV A,# HMOVX DPTR,AINC DPTR ;PC口状态0MOV A,# HMOVX DPTR,AMOV 20H,#55HLCALL DELAYS1: MOV DPTR,#
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1