数据传送实验 实验项目类型:设计型 实验时间:2012.10.15 一、实验目的 1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉Keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。
二、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。 4、编写程序将片外4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH单元中。
三、实验程序流程框图和程序清单。
流程图
程序一 程序二 程序三 程序四 程序五 程序清单 ORG 0000H
MAIN: MOV R0, #30H MOV A, #00H T1: MOV @R0, A INC R0 INC A CJNE A, #10H, T1
MOV R0, #3FH MOV R2, #10H MOV R1, #4FH T2: MOV A, @R0 MOV @R1, A DEC R0 DEC R1 DJNZ R2, T2
MOV R2, #10H MOV R1, #4FH MOV DPTR, #480FH T3: MOV A, @R1 MOVX @DPTR, A DEC R1 DEC A MOV DPL, A DJNZ R2, T3
MOV DPL, #00H MOV R2, #10H T4: MOV DPH, #48H MOVX A, @DPTR MOV DPH, #58H MOVX @DPTR, A INC DPTR DJNZ R2, T4
MOV R0, #50H MOV DPTR, #5800H MOV R2, #10H T5: MOVX A, @DPTR MOV @R0, A INC R0 INC A MOV DPL, A DJNZ R2, T5 END
四、实验总结 通过此次实验,熟悉了kille开发软件的使用,对单片机理解更深刻。 学会了设计简单的程序,把课堂上的理论内容与实践相结合,学习起来更加有效率。 五、实验思考 1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式? 答: 片内RAM存储器的寻址方式:1、寄存器寻址 2、直接寻址 3、寄存器间接寻址 4、位寻址方式 片外只能通过累加器A使用间接寻址 2、说明指令MOV A,20H和MOV C,20H中的20H含义有什么不同?传送指令中的助记符 MOV,MOVX,MOVC各适用于访问哪个存储器空间? 答:1、MOV A, 20H 把20H单元中的内容送往累加器A中, MOV C, 20H 把20H位的状态送往进位C MOV 适用于内部的RAM存储空间 MOVX 适用于外部的RAM存储空间 MOVC 适用于程序存储空间 实验名称:单片机并行I/O口的应用实验 实验类型:设计型 时间:2012年11月6日 设计性实验 一、实验目的 1、熟悉Proteus软件和Keil软件的使用方法。 2、熟悉单片机应用电路的设计方法。 3、掌握单片机并行I/O口的直接应用方法。 4、掌握单片机应用程序的设计和调试方法 二、设计要求 1、用Proteus软件画出电路原理图。要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警 三、电路原理图 4、实验程序流程框图和程序清单 一、循环右移
ORG 0000H MAIN: MOV P1, #0FFH MOV A, #7FH LOOP: MOV P1, A CLR P3.0 LCALL DELAY CPL P3.0 LCALL DELAY RR A LJMP LOOP DELAY: MOV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END
开始初始化给P1送7FH将P3.0口置零延时0.5s将P3.0口置1延时0.5sP1右移 二、循环左移 ORG 00H MAIN: MOV P1, #0FFH MOV A , #0FEH LOOP: MOV P1, A CLR P3.0 LCALL DELAY SETB P3.0 LCALL DELAY RL A LJMP LOOP DELAY: MOV R7, #17H DL1: MOV R6, #98H DL0: MOV R5, #46H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET END
开始初始化给P1送0FEH将P3.0口置零延时0.5s将P3.0口置1延时0.5sP1左移 四、实验总结 通过本次试验,加深了对延时程序的理解,熟练了对keil和protues的使用。更加熟悉了单片机实验课的节奏,加强了自己的动手能力,收获很多.
五、思考题 1、编程实现LED0至LED7以十六进制计数规律亮灯? ORG 0000H
MOV P1, #0FFH MOV A, #0FFH
MOV R7, #16 LOOP: MOV P1, A LCALL DELAY1S DEC A DJNZ R7, LOOP LJMP MAIN DELAY1S: MOV R7, #0A7H DL1: MOV R6, #0ABH DL0: MOV R5, #10H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 NOP RET END
开始将P1初始化给A赋初值0FFH
延时1s设立循环判断数R1为16
将A的值传送给P1口
将R1自减判断是否为零Y
将A自减N 实验三、定时器/计数器应用实验一 实验性质、设计性实验 一、实验目的 1、掌握中断系统外部中断源的使用方法。 2、掌握延时程序的编程及使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法 二、设计要求 1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0 ,作为外部中断源0使用,用于开启波形,在单片机的 P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。 2、在单片机的P1.2口线上产生周期50mS的连续方波,在P1.2口线上接示波器观察波形。 3、电路原理图。
三、实验程序流程框图和程序清单 ` ORG 0000H START: LJMP MAIN ORG 0030H MAIN: MOV TMOD, #10H MOV TH1, #0FFH MOV TL1, #9CH MOV IE, #00H SETB TR1 LOOP: JNB TF1, LOOP MOV TH1, #0FFH MOV TL1, #9CH CLR TF1 CPL P1.0 LJMP LOOP END
ORG 0000H LJMP MAIN ORG 001BH LJMP LOOP1 ORG 0030H MAIN: MOV SP, #3FH MOV TMOD, #20H MOV TH1 , #88H MOV TL1, #88H SETB EA SETB ET1 SETB TR1 HERES: LJMP $ LOOP1: CPL P1.1 RETI END
开始TMOD初始化计数初值初始化中断初始化启动定时器
定时重置计数初值清计数溢出标志P1.0口线取反
YN
开始TMOD初始化计数初值初始化中断初始化启动定时器等待中断
开始计数初值初始化
中断返回输出取反