1、实验一 跑马灯实验一、实验目的与要求熟悉星研集成环境软件或熟悉 Keil C51 集成环境软件的使用方法。熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件。二、实验设备 STAR 系列实验仪一套、PC 机一台三、实验内容1、熟悉星研集成环境软件或熟悉 Keil C51 集成环境软件的安装和使用方法。2、照接线图编写程序:使用 P1 口控制 F5 区的 8 个指示灯,循环点亮,瞬间只有一个灯亮。2、观察实验结果,验证程序是否正确。四、实验原理图1122334455667788991010111112121313141415151616D DC CB BA ATitleNumber Re
2、visionSizeA0Date: 2005-12-20 Sheet of File: F:InovationSTAR.SCHDOC Drawn By:P1.01P1.12P1.23P1.34P1.45P1.56P2.1(A9) 22P2.2(A10) 23P2.3(A11) 24P2.4(A12) 25P2.5(A13) 26P2.6(A14) 27P2.7(A15) 28PSEN 29ALE/PROG 30EA/Vpp 31P0.7(AD7) 32P0.6(AD6) 33P0.5(AD5) 34P0.4(AD4) 35P0.3(AD3) 36P0.2(AD2) 37P0.1(AD1) 38
3、P0.0(AD0) 39Vcc 40P1.67P1.78RST9(RXD)P3.010(TXD)P3.111(INT0)P3.212(INT1)P3.313(T0)P3.414(T1)P3.515(WR)P3.616(RD)P3.717XTAL218XTAL119P2.0(A8) 21GND2089C52U42DS35DS36DS37DS38DS39DS40DS41VCCDS4212345678510R111510R112510R113510R114510R115510R116510R117510R118五、实验步骤 1、连线说明: A3 区:JP51 F5 区:JP652、编写程序或运行参考
4、程序。 3、实验结果:通过 F5 区的 LED 指示灯(8 个指示灯轮流点亮) ,观察实验的输出结果是否正确。六、演示程序ORG 0000HLJMP STARTORG 0100HSTART: MOV SP,#60HMOV A,#0FFHCLR CSTART1: RLC AMOV P1,AACALL DelaySJMP START1Delay: MOV R5,#2 ;延时Delay1: MOV R6,#0Delay2: MOV R7,#0DJNZ R7,$DJNZ R6,Delay2DJNZ R5,Delay1RETEND如果读者使用星研集成环境软件,请考虑以下问题?1、运行程序前,打开变量窗;
5、2、使用单步进入命令,运行到第六行后,运行过程中变量窗有何变化?将鼠标停留在A、SP 上一秒后,出现什么?,它与变量窗使用场合的区别?3、第九行是调用延时子程序,如何进入延时子程序(使用单步进入命令)?如何将延时子程序一下子运行完毕(使用单步命令;也可以将光标移到下一行,使用运行到光标处命令;)?单步进入命令与单步命令有何区别?4、运行几次后,在第十行设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?5、Delay 是一个延时子程序,改变延时常数,使用全速运行命令,显示发生了什么变化?6、观察寄存器,有哪几种方法?1)在工作区窗的通用寄存器标签视中;2)变量窗
6、3)鼠标停留在寄存器上4)观察窗5)寄存器窗实验二 数据传送(RAMXRAM)一、实验目的熟悉星研集成环境软件或熟悉 Keil C51 集成环境软件的使用方法。熟悉 MCS51 汇编指令,能自己编写简单的程序,掌握数据传输的方法。二、实验内容1、熟悉星研集成环境软件或熟悉 Keil C51 集成环境软件的安装和使用方法。2、编写程序,实现内外部数据段的传送、校验。三、程序框图 开 始堆 栈 指 针 初 始 化计 数 器 、 地 址 初 始 化内 部 RAM数 据 传 送 外 部一 次地 址 指 针 +1 计 数 器 -=0?计 数 器 、 地 址 指 针 复 位 取 内 部 RAM和 对 应
7、的 外部 比 较 是 否 相 等地 址 指 针 +1 计 数 器 -=0?传 送 正 确传 送 错 误结 束NYY数 据 传 送 程 序 框 图四、实验步骤在内部 RAM 30H 3FH 中输入数据;使用单步、断点方式调试程序,检测外部数据RAM 的 1000H 100FH 中的内容。熟悉查看特殊功能寄存器、内部数据 RAM、外部数据空间的各种方法。五、程序清单;将内部 RAM Address1 开始的 16 个字节送到外部 RAM 从 Address2 开始的单元里,再作比较。Address1 DATA 30HAddress2 XDATA 1000HORG 0000HLJMP STARORG
8、 0100HSTAR: MOV SP,#60HMOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR1: MOV A,R0 ;传送MOVX DPTR,AINC R0INC DPTRDJNZ R7,STAR1MOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR2: MOV B,R0 ;比较MOVX A,DPTRCJNE A,B,STAR3INC R0INC DPTRDJNZ R7,STAR2SJMP $ ;传送正确STAR3: SJMP $ ;传送错误END如果读者使用星研集成环境软件,请考虑以下问题:1、
9、运行程序前,打开变量窗、二个存贮器窗(一个选择片内数据;一个选择片外数据,起始地址选择 1000H) ,每个存贮器窗有四个标签,有何好处?;2、使用单步进入命令,运行到第十四行后,运行过程中变量窗有何变化?将鼠标停留在 A、SP、R0、DPTR 上一秒后,出现什么?,它与变量窗使用场合的区别?3、将光标移到第十四行上,使用运行到光标处命令,观察运行结果,体会它与单步进入命令的不同处。4、在二十行上,设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?5、使用全速运行命令,稍后,点击工具条上停止运行命令按钮,当前执行箭头停在哪一行?运行结果是否正确?它与全速断点运
10、行命令有何区别?6、观察寄存器,有哪几种方法?1)在工作区窗的通用寄存器标签视中;2)变量窗3)鼠标停留在寄存器上4)观察窗 5)寄存器窗7、查看 CPU 内部数据 RAM、CPU 片外数据 RAM:1)存贮器窗 2)变量窗 3)鼠标停留在 CPU 内部数据 RAM、CPU 片外数据 RAM 的地址、R0、DPTR 上六、思考题编写一个程序,将外部数据 RAM 中的数据传送到内部数据 RAM 中。实验三 双字节 BCD 码(十进制数)加法一、实验目的熟悉 51 汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉 BCD 码,了解如何调用系统提供的子程序。二、实验内容从键盘上输入 4
11、 位被加数、加数,实现双字节 BCD 码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改 PC 指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据 RAM、外部数据空间的各种方法。三、实验框图 开 始初 始 化 堆 栈设 定 “先 清 LED,再 接 收键 输 入 标 志通 过 键 盘 获 得 4位 被 加数 (压 缩 BC码 )置 位 接 收 到 第 一 个 键后 才 清 除 标 志通 过 键 盘 获 得 位 加 数压 缩 D码 )被 加 数 与 加 数 的 低 位字 节 不 带 进 位 加 法 被 加 数 与 加 数 的 高 位 字节 带
12、进 位 加 法十 进 制 调 整十 进 制 调 整压 缩 码 (结 果 )转 换为 非 压 缩 码高 位 0消 隐显 示 结 果双 字 节 BC加 法 程 序 框 图四、实验步骤1、连线说明:D3 区 :CLK B2 区:2MD3 区 :CS A3 区:CS5D3 区 :A0 A3 区:A02、在 F4 区的键盘上输入 4 位被加数、加数3、结果显示在 F4 区的数码管上五、程序清单EXTRN CODE(Display8, GetBCDKey)Buffer DATA 30H ;8 字节显示缓冲区F1 BIT 0D1H ;PSW.1ORG 0000HLJMP STARTORG 0100HSTAR
13、T: MOV SP,#60HCLR F1 ;先清除显示,再接收键输入START1: MOV R0,#bufferMOV A,#4 ;按键次数LCALL GetBCDKey ;得到双字节十进制数(被加数)SETB F1 ;接收到第一个键,才清除显示MOV R0,#buffer+4MOV A,#4 ;按键次数LCALL GetBCDKey ;得到双字节十进制数(加数)MOV A,buffer+1ADD A,buffer+5DA AMOV buffer+5,AMOV A,bufferADDC A,buffer+4DA AMOV buffer+4,ACLR ARLC ADisplay: PUSH AC
14、C ;显示结果MOV R0,#bufferMOV A,buffer+5 ;低位ACALL B1toB2 ;压缩 BCD 码转换成非压缩 BCD 码MOV A,buffer+4 ;高位ACALL B1toB2POP ACC ;进位ACALL B1toB2MOV R0,#10H ;最高二位消隐INC R0MOV R0,#10HMOV R0,#buffer+5MOV R7,#5ACALL BlackDisplay ;将高位 0 消隐MOV R0,#bufferLCALL Display8SJMP START1;将一个字节压缩 BCD 码转换成二个字节非压缩 BCD 码B1toB2: PUSH ACC
15、ANL A,#0FHMOV R0,AINC R0POP ACCANL A,#0F0HSWAP AMOV R0,AINC R0RETBlackDisplay: MOV A,R0 ;将高位 0 消隐JNZ ExitMOV A,#10HMOV R0,ADEC R0DJNZ R7,BlackDisplayExit: RETEND实验四 8255 控制交通灯实验一、实验目的与要求1、 了解 8255 芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用 8255 并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。2、 熟悉 8255 内部结构和与单片机的接口逻辑,熟悉 8255
16、 芯片的 3 种工作方式以及控制字格式。3、 认真预习本节实验内容,尝试自行编写程序,填写实验报告。二、实验设备STAR 系列实验仪一套、PC 机一台三、实验内容1、编写程序:使用 8255 的 PA02、PA57 控制 LED 指示灯,实现交通灯功能。2、连接线路验证 8255 的功能,熟悉它的使用方法。四、实验原理图1122334455667788991010111112121313141415151616D DC CB BA ATitleNumber RevisionSizeA0Date: 2005-12-19 Sheet of File: F:InovationSTAR.SCHDOC
17、Drawn By:D034 D133D232 D331D430 D529D628 D727PA0 4PA1 3PA2 2PA3 1PA4 40PA5 39PA6 38PA7 37PB0 18PB1 19PB2 20PB3 21PB4 22PB5 23PB6 24PB7 25PC0 14PC1 15PC2 16PC3 17PC4 13PC5 12PC6 11PC7 10RD5 WR36A09 A18RESET35 CS68255U36D0D1D2D3D4D5D6D7WRRDRSTA0A1PC5PC6PC7PC2PC3PC4PC0PC1DS35DS36DS37DS38DS39DS40DS41123
18、45678VCCDS42A0A1CSCS1(0F000H)510 R111510 R112510 R113510 R114510 R115510 R116510 R117510 R118五、实验步骤1、连线说明:B4 区:CS、A0、A1 A3 区:CS1、A0、A1B4 区:JP56(PA 口) F5 区:JP652、观察实验结果,是否能看到模拟的交通灯控制过程。六、演示程序COM_ADD XDATA 0F003HPA_ADD XDATA 0F000HPB_ADD XDATA 0F001HPC_ADD XDATA 0F002HORG 0000HLJMP STARORG 0100HSTAR:
19、MOV SP,#60H MOV DPTR,#COM_ADDMOV A,#80H ;PA、PB、PC 为基本输出模式MOVX DPTR,AMOV DPTR,#PA_ADD ;灯全熄灭MOV A,#0FFHMOVX DPTR,ASTART1: MOV A,#37HMOVC A,A+PCMOVX DPTR,A ;东西绿灯,南北红灯ACALL DL5SMOV R4,#6START2: MOV A,#30HMOVC A,A+PCMOVX DPTR,A ;东西绿灯闪烁,南北红灯ACALL DL500msMOV A,#29HMOVC A,A+PCMOVX DPTR,AACALL DL500msDJNZ R4
20、,START2MOV A,#23H ;东西黄灯亮,南北红灯MOVC A,A+PCMOVX DPTR,AACALL DL3SMOV A,#1EH ;东西红灯,南北绿灯MOVC A,A+PCMOVX DPTR,AACALL DL5SMOV R4,#6START3: MOV A,#17H ;东西红灯,南北绿灯闪烁MOVC A,A+PCMOVX DPTR,AACALL DL500msMOV A,#10HMOVC A,A+PCMOVX DPTR,AACALL DL500msDJNZ R4,START3MOV A,#0AH ;东西红灯,南北黄灯亮MOVC A,A+PCMOVX DPTR,AACALL DL
21、3SSJMP START1DB 01111110B ;东西绿灯,南北红灯DB 11111110B ;东西绿灯闪烁,南北红灯DB 10111110B ;东西黄灯亮,南北红灯DB 11011011B ;东西红灯,南北绿灯DB 11011111B ;东西红灯,南北绿灯闪烁DB 11011101B ;东西红灯,南北黄灯亮DL500ms: MOV R5,#25DL500ms1: MOV R6,#100DL500ms2: MOV R7,#100DJNZ R7,$DJNZ R6,DL500ms2DJNZ R5,DL500ms1RETDL3S: MOV R4,#6DL3S1: LCALL DL500msDJNZ R4,DL5S1RETDL5S: MOV R4,#10DL5S1: LCALL DL500msDJNZ R4,DL5S1RETEND七、实验扩展及思考1、如何对 8255 的 PC 口进行位操作?