1、实验一应用系统开发过程及常用指令实-单片机 作者: 日期:28 个人收集整理 勿做商业用途实验一:应用系统开发过程及常用指令实验一、实验目的:了解80C51典型应用系统的开发过程及Win51组合软件的使用掌握80C51的寻址方式及常用指令的使用方法.二、实验内容:数据传送:8031内部RAM40H4FH置初值AOHAFH,然后将40H4FH的内容传送到外部RAM中的2000H200FH单元,再把外部数据RAM中的2000H200FH单元的内容传送到8031内部RAM中的50H5FH单元.实验参考程序如下:地址 机器代码 汇编程序 ORG 1000H 1000 803D SJMP MAIN OR
2、G 103FH 103F 7840 MAIN:MOV R0,40H 1041 7A10 MOV R2,#10H 1043 74A0 MOV A,#0A0H 1045 F6 A1: MOV R0,A 1046 08 INC R0 1047 04 INC A 1048 DAFB DJNZ R2,A1 104A 7840 MOV R0,40H 104C 902000 MOV DPTR, #2000H 104F 7A10 MOV R2,10H 1051 E6 A2: MOV A,R0 1052 F0 MOVX DPTR, A 1053 08 INC R0 1054 A3 INC DPTR 1055 D
3、AFA DJNZ R2,A2 1057 7850 MOV R0, 50H 1059 902000 MOV DPTR, 2000H 105C 7A10 MOV R2,10H 105E F0 A3: MOVX A, DPTR 105F F6 MOV R0, A 1060 08 INC R0 1061 A3 INC DPTR 1062 DAFA DJNZ R2, A3 1064 80FE A4: SJMP A4 END三、实验步骤:1、 演示80C51典型应用系统的开发过程、进入Win51组合软件的操作环境、在Win51组合软件环境中, 编辑源程序; 、源程序编辑好后,就可对源文件进行编译,生成目标
4、代码并传送到开发系统的RAM中.、运行、调试程序和结果检查 在Debug窗口下,分别采用单步、宏单步、执行到光标处等命令运行程序到104C,105C,1064处,观察40H4FH,2000H200FH、50H5FH中的内容. 修改40H4FH、2000H200FH、50H5FH中的内容.然后分别在104C,105C,1064C处,采用设置断点的方法运行程序,再观察40H4FH,2000H200FH,50H5FH中的内容四、思考题 1、从103F104A,104A1055,10571064这三段程序分别完成哪些任务?2、跳转指令中偏移量如何计算?五、预习要求:1、阅读教科书中8031的指令系统,
5、重点掌握的指令有数据传送、跳转指令的使用方法 2、阅读Win51组合软件,掌握组合软件的进入、退出方法。重点掌握单步运行程序的方法和执行到光标处运行程序的方法六、实验报告:1、将数据传送程序加上注释语句 2、回答思考题实验二:80C51程序设计实验(设计性实验)一、实验目的: 掌握80C51汇编语言程序设计方法 掌握80C51汇编语言程序的调试方法二、实验任务:1、完成二字节加法程序的设计与调试.要求:加数首地址由R0指出,被加数和结果的存贮单元首地址由R1指出,字节数由R2指出.2、完成二进制数转换为BCD程序的设计与调试。要求:将A中的8位二进制数转换为BCD数,结果放在8031内部RAM
6、的20H21H单元中。三、实验准备:1、根据每个实验内容提出的要求设计相应的程序2、写出实验步骤及方法四、实验设备:1、DICE598H+开发型实验系统 2、配套计算机 五、预习要求:(1) 阅读教科书中8031的指令系统及程序的设计方法,重点掌握算术运算,转移等指令。(2) 阅读Win51组合软件,重点掌握连续运行程序的方法和设置断点运行程序的方法(3) 写出预习报告六、思考题:8031单片机的寻址方式有哪些?七、实验报告要求(1)整理好执行正确的程序和数据;(2)回答思考题.实验三:中断、定时器系统应用实验(设计性实验)一、实验目的: 掌握定时/计数器、中断初始化程序的设计. 掌握使用定时
7、/计数器的方式1、方式2的编程方法 掌握中断的编程方法。二、实验硬件电路: LED共阴极接法 三、实验任务:完成在每隔1秒钟接在P1 口的八个发光二极管循环闪亮程序设计和调试.要求:1、选择定时器T1为工作方式1,产生100mS定时,使P1口的八个发光二极管循环闪亮。2、用定时器串联方式,使T0 工作于定时(产生100mS定时),使T1 工作计数(计数10次,正好1秒)。每次T0溢出后从P3。0 口给T1 端送出一个负脉冲,当T1溢出后P1口的八个发光二极管循环闪亮。T0、T1的溢出,采用中断方式四、实验准备:1、 根据硬件电路原理图,分析二极管闪亮的条件,(74LS07同相驱动器)2、根据硬
8、件电路原理图,画出实际接线图3、根据实验任务设计出相应的程序4、写出实验步骤和方法五、实验设备1、DICE598H+开发型实验系统 2、配套计算机 六、预习要求:1、阅读教科书中有关定时器/计数器的内容、熟悉定时器/计数器的基本结构和工作过程2、阅读Win51组合软件,掌握连续运行程序的方法。3、计算定时器/计数器时间常数4、写出预习报告七、思考题:定时器工作于方式1,方式2时其最大定时时间是多少(设单片机的晶振为6MHZ) 八、实验报告要求(1)整理好执行正确的程序和数据;(2)回答思考题实验四:显示接口实验 一、实验目的:掌握单片机与8155接口方法 掌握动态扫描显示程序的编程方法和调试方
9、法二、实验内容 1、编制动态显示扫描程序,显示位数为6位,显示缓冲区地址为78H7DH, 8155控制口地址:FF20H;8155A口:FF21H;8155B口:FF22H字形“0”到“F”“P”“-”等。2、编制自动计数程序,要求显示器显示000060每秒增1三、实验硬件电路: 参考程序如下: ORG 0000HDIS: MOV A,03H MOV DPTR,0ff20H MOVX DPTR,A LD2: MOV R0,#78H MOV R3,#20H MOV A,R3 LD0: MOV DPTR,0ff21H MOVX DPTR,A INC DPTR MOV A,R0 ADD A,#0EH
10、 MOVC A,A+PC MOVX DPTR,A ACALL DL1 INC R0 MOV A,R3 JB ACC。0,LD1 RR A MOV R3,A AJMP LD0LD1: AJMP LD2DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90HDB 88H,83H,0c6H,0a1H,86H,8eH DL1: MOV R5,#02H DL0: MOV R7,#02H DL: MOV R6,#0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL DJNZ R5,DL0 RET END四、实验步骤: 1 读懂源程序并写出程序流程图、进入W
11、in51组合软件的操作环境、在Win51组合软件环境中, 编辑源程序; 、源程序编辑好后,就可对源文件进行编译,生成目标代码并传送到开发系统的RAM中。、运行、调试程序和结果检查 把需显示的数字送到显示缓冲区(78H,79H,7AH) 采用单步,宏单步,执行到光标处,设置断点等方法, 态观察程序走向是否正确及硬件连接是否正确; 连续运行程序,观察LED的输出。 改变R5,R7的初值,观察输出的变化。五、思考题:本次实验8155的工作方式?指出程序中的那些语句决定了8155的工作方式 六、预习要求:按照实验内容2的要求编写程序。七、实验报告:1、将动态显示程序加上注释语句,并说出其功能。 2、回
12、答思考题.实验五:键盘接口实验一、实验目的: 熟悉单片机通过8155与键盘的接口方法 掌握键盘扫描及处理程序的编程方法和调试方法二、实验内容:程序运行后,在没有键入时,在LED上显示1,按下数字键,数码管上应能显示相应数字。 三、实验硬件电路ORG 0000H MOV 78H,01H MOV 79H,#01H MOV 7AH,#01H MOV 7BH,#01H MOV 7CH,01H MOV 7DH,01H MOV DPTR,#0FF20H MOV A,03H MOVX DPTR,A KEY1: ACALL KS1 JNZ LK1 NI: ACALL DIS AJMP KEY1 LK1: AC
13、ALL DIS ACALL DIS ACALL KS1 JNZ LK2 ACALL DIS AJMP KEY1 LK2: MOV R2,0FEH MOV R4,00H LK4: MOV DPTR,0FF21H MOV A,R2 MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR JB ACC。0, LONE MOV A,00H AJMP LKP LONE: JB ACC。1, LTRE MOV A,#08H AJMP LKP LTRE: JB ACC。2, NEXT MOV A,18H LKP: ADD A,R4 MOV DPTR,TAB MOVC A,A+DP
14、TR PUSH ACC LK3: ACALL DIS ACALL KS1 JNZ LK3 POP ACC MOV 78H,79H MOV 79H,7AH MOV 7AH,A NEXT: INC R4 MOV A,R2 JNB ACC.7, KND RL A MOV R2,A AJMP LK4 TAB: DB 07H,04H,08H,05H,09H,06H,0AH,0BH DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH KND: AJMP KEY1 KS1: MOV DPTR,0FF21H MOV A,00H MOVX DPTR,A INC DPTR INC DPTR MO
15、VX A,DPTR CPL A ANL A,0FH RET DIS: MOV R0,#78H MOV R3,20H MOV A,R3 LD0: MOV DPTR,0ff21H MOVX DPTR,A INC DPTR MOV A,R0 ADD A,#0DH MOVC A,A+PC MOVX DPTR,A ACALL DL1 INC R0 MOV A,R3 JB ACC。0,LD1 RR A MOV R3,A AJMP LD0 LD1: RET DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8HDB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH
16、DL1: MOV R5,#02H DL0: MOV R7,#02H DL: MOV R6,0FFH DL6: DJNZ R6,DL6 DJNZ R7,DL DJNZ R5,DL0 RET END 四、实验步骤: 1、进入Win51组合软件的操作环境2、在Win51组合软件环境中, 编辑源程序; 3、源程序编辑好后,就可对源文件进行编译,生成目标代码并传送到开发系统的RAM中.4、运行、调试程序和结果检查 采用单步,宏单步,执行到光标处,设置断点等方法,观察程序走向是否正确; 连续运行程序,依次按动数字键观察LED的显示是否相符。 五、思考题:字型码是如何确定的,六、预习要求:1、了解键盘接口的
17、功能2、 熟悉键扫描、键处理程序的设计思路。七、实验报告: 1、将键盘接口程序加上注释语句,并说出其功能. 2、回答思考题。实验六:A/D转换器接口实验一、实验目的:熟悉单片机与A/D转换芯片的接口方法。了解A/D转换芯片的转换性能及编程方法。通过实验了解单片机如何进行数据采集。二、实验内容:利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,并在数码管显示出来。三、实验硬件电路参考程序如下: ORG 0000H MOV SP,#53H MOV 7EH,00H MOV 7DH,#08H MOV 7CH,00H MOV 7BH,09H MOV
18、 7AH,10H MOV 79H,#10H MOV A,03H MOV R1,20H MOVX R1,A L1:LCALL DIS MOV A,#00H MOV DPTR,#8000H MOVX DPTR,A MOV R7,0FFH L2:DJNZ R7,L2 MOVX A,DPTR MOV R0,79H LCALL L3 SJMP L1 L3:MOV R1,A ACALL L4 MOV A,R1 SWAP A L4:ANL A,#0FH MOV R0,A INC R0 RET DIS:SETB RS1 MOV R5,#05H DIS1:MOV 30H,#20H MOV 31H,#7EH MO
19、V R7,06H DIS2:MOV R1,21H MOV A,30H MOVX R1,A MOV R0,31H MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV R1,22H MOVX R1,A MOV A,30H RR A MOV 30H,A DEC 31H MOV A,#0FFH MOVX R1,A DJNZ R7,DIS2 DJNZ R5,DIS1 CLR RS1 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,0FFH,0CH,89H,0D
20、EH END四、实验步骤: 1、将0809的零通道INT0用插针接至AIN1孔,CS4位接至8000孔、进入Win51组合软件的操作环境、在Win51组合软件环境中, 编辑源程序; 、源程序编辑好后,就可对源文件进行编译,生成目标代码并传送到开发系统的RAM中.、运行、调试程序和结果检查 采用单步,宏单步,执行到光标处,设置断点等方法,态观察程序走向是否正确; 连续运行程序,数码管上显示当前采集的电压转换的数字量,调节W1可看到数码管的输出发生变化。五、思考题:如何用中断方式读取A/D转换结果?六、预习要求:熟悉A/D0809的转换原理,熟悉其接口电路,七、实验报告:1写出原程序的注释语句,并
21、说明其功能, 2回答思考题。实验七:D/A转换器接口实验 一、实验目的: 熟悉单片机与D/A转换芯片的接口方法。了解D/A转换芯片的转换性能及编程方法。二、实验内容:利用实验系统上的0832做D/A转换器实验,从0832输出一个从0V开始逐渐升至5V再降至0V的正弦波电压,数码管显示送入的数字量,三、实验硬件电路参考程序如下: ORG 0000H MOV SP,#53H MOV 7EH,#00H MOV 7DH,08H MOV 7CH,03H MOV 7BH,#02H MOV A,#03H MOV R1,20H MOVX R1,A LO20:MOV R6,00H LO21:MOV DPTR,8
22、000H MOV A,R6 MOVX DPTR,A MOV R0,#79H LCALL PTDS LCALL DIS MOV R2,08H LCALL DL1 INC R6 CJNE R6,0FFH,LO21 LO22:MOV DPTR,#8000H DEC R6 MOV A,R6 MOVX DPTR,A MOV R0,79H LCALL PTDS LCALL DIS MOV R2,#08H LCALL DL1 CJNE R6,00H,LO22 SJMP LO20 PTDS:MOV R1,A ACALL PTDS1 MOV A,R1 SWAP A PTDS1:ANL A,0FH MOV R0,
23、A INC R0 RET DIS:SETB RS1 MOV R5,#05H DIS1:MOV 30H,20H MOV 31H,#7EH MOV R7,06H DIS2:MOV R1,#21H MOV A,30H MOVX R1,A MOV R0,31H MOV A,R0 MOV DPTR,#DDFF MOVC A,A+DPTR MOV R1,#22H MOVX R1,A MOV A,30H RR A MOV 30H,A DEC 31H MOV A,0FFH MOVX R1,A DJNZ R7,DIS2 DJNZ R5,DIS1 CLR RS1 RET DL1: MOV R5,02H DL0:
24、MOV R7,#02H DL: MOV R4,0FFH DL6: DJNZ R4,DL6 DJNZ R7,DL DJNZ R5,DL0 RET DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,0FFH,0CH,89H,0DEH END四、实验步骤: 1、把开发系统电源的12V接到开发系统中,将0832译码线CS5位接至8000孔、进入Win51组合软件的操作环境、在Win51组合软件环境中, 编辑源程序; 、源程序编辑好后,就可对源文件进行编译,生成目标代码并传送到开发系统的RAM中.
25、、运行、调试程序和结果检查 采用单步,宏单步,执行到光标处,设置断点等方法,态观察程序走向是否正确; 连续运行程序,数码管上显示不断加大或减小的数字量,用万用表测试D/A输出孔AOUT,也能测出不断加大或减小的电压值。五、思考题:DAC0832有几种工作方式?如何实现?六、预习要求:熟悉DAC0832五、思考题:如何用中断方式读取A/D转换结果?七、实验报告:1写出原程序的注释语句,并说明其功能, 2回答思考题。 实验八:电脑时钟程序实验(综合性实验)一、实验目的: 进一步掌握定时器/计数器的使用方法, 了解、熟悉80C51综合性程序的编程方法二、实验内容:从598H+实验系统键盘上输入时间初
26、值,按下EXEC键,数码管上将实时显示时间值。三、硬件电路:主要芯片:8031、8155、75452、74LS240、LEDORG 0000HLJMP CHK0ORG 000BHLJMP CLOCKCHK0:MOV SP,#60HLCALL LCK0LCALL PTDS0MOV TMOD,01HORL IE,82HMOV TL0,#0B7HMOV TH0,0CHMOV 23H,00HSETB TR0LOO5:LCALL SSEELCALL PTDS0SJMP LOO5PTDS0: MOV R0,#79HMOV A,22HACALL PTDSMOV A,21HACALL PTDSMOV A,20
27、HACALL PTDSRETPTDS:MOV R1,AACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,0FHMOV R0,AINC R0RETCLOCK: MOV TL0,0B7HMOV TH0,#3CHPUSH PSWPUSH ACCSETB 0D3HINC 23HMOV A,23HCJNE A,#0AH,DONEMOV 23H,00HMOV A,22HINC ADA AMOV 22H,ACJNE A,60H,DONEMOV 22H,00HMOV A,21HINC ADA AMOV 21H,ACJNE A,60H,DONEMOV 21H,00HMOV A,20HI
28、NC ADA AMOV 20H,ACJNE A,#24H,DONEMOV 20H,#00HDONE:POP ACCPOP PSWRETIORG 0D50HSSEE:SETB RS1MOV R5,#05HSSE2:MOV 30H,20HMOV 31H,#7EHMOV R7,#06HSSE1:MOV R1,21HMOV A,30HMOVX R1,AMOV R0,31HMOV A,R0MOV DPTR,#DDFFMOVC A,A+DPTRMOV R1,22HMOVX R1,AMOV A,30HRR AMOV 30H,ADEC 31HMOV A,#0FFHMOVX R1,ADJNZ R7,SSE1DJ
29、NZ R5,SSE2CLR RS1RETDDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEHORG 1D00HX3:MOV R4,AMOV R0,59HMOVX A,R0MOV R1,AMOV A,R4MOV R1,ACLR APOP DPHPOP DPLMOVC A,A+DPTRINC DPTRCJNE A,01H,X30CLR AMOVC A,A+DPTRX31:MOVX R0,AINC DPTRPUSH DPLPUSH DPHRETX30:DE
30、C R1MOV A,R1SJMP X31X2:MOV R6,#50HX0:ACALL XLEJNB ACC.5,XX0DJNZ R6,X0MOV R6,#20HMOV R0,59HMOVX A,R0MOV R0,AMOV A,R0MOV R7,AMOV A,10HMOV R0,AX1:ACALL XLEJNB ACC。5,XX1DJNZ R6,X1MOV A,R7MOV R0,ASJMP X2XX1:MOV R6,AMOV A,R7MOV R0,AMOV A,R6XX0:RETXLE:ACALL DISACALL KEYMOV R4,AMOV R1,48HMOVX A,R1MOV R2,AIN
31、C R1MOVX A,R1MOV R3,AMOV A,R4XRL A,R3MOV R3,04HMOV R4,02HJZ X10MOV R2,#88HMOV R4,88HX10:DEC R4MOV A,R4XRL A,#82HJZ X11MOV A,R4XRL A,#0EHJZ X11MOV A,R4ORL A,R4JZ X12MOV R4,20HDEC R2SJMP X13X12:MOV R4,0FHx11:MOV R2,04HMOV R4,03HX13:MOV R1,#48HMOV A,R2MOVX R1,AINC R1MOV A,R3MOVX R1,AMOV A,R4RETLS3:DB 0
32、7H,04H,08H,05H,09H,06H,0AHDB 0BH,01H,00H,02H,0FH,03H,0EHDB 0CH,0DHDIS:PUSH DPHPUSH DPLSETB RS1MOV R0,#7EHMOV R2,#20HMOV R3,#00HMOV DPTR,LS0LS2:MOV A,R0MOVC A,A+DPTRMOV R1,22HMOVX R1,AMOV A,R2DEC R1MOVX R1,ADEC R0LS1:DJNZ R3,LS1CLR CRRC AMOV R2,AJNZ LS2INC R1MOV A,#0FFHMOVX R1,ACLR RS1POP DPLPOP DPHR
33、ETLS0:DB 0C0H,0F9H,0A4H,0B0H,99H,92HDB 82H,0F8H,80H,90H,88H,83H,0C6HDB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFHKEY:SETB RS1MOV R2,0FEHMOV R3,08HMOV R0,00HLP1:MOV A,R2MOV R1,21HMOVX R1,ARL AMOV R2,AMOV R1,23HMOVX A,R1CPL AANL A,#0FHJNZ LP0INC R0DJNZ R3,LP1MOVX A,R1JB ACC。4,XP33MOV A,#19HSJMP XP3XP33:MOV A,#20HXP3:CLR RS1RETLP0:CPL AJB ACC。0,XP0MOV A,00HSJMP LPPXP0:JB ACC。1,XP1MOV A,#08HSJMP LPPXP1:JB ACC。2,XP2MOV A,10HSJMP LPPXP2:JB ACC。3,XP33MOV A,18HLPP:ADD A,R0CLR RS1CJNE A,10H,LX0LX0:JNC XP35MOV DPTR,#LS3MOVC A,A+DPTRXP35:R