单片机(1)

单片机实验讲义

实验三 拼字程序

一、实验目的

进一步掌握汇编语言设计和调试方法。

开始二、实验内容

把2000H.2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。

DPTR=2000H,(DPTR→ A,将A屏蔽高位,高低位互换,送B三、实验程序框图

DPTR+1 DPTR,(DPTR) A将A屏蔽高位,与B相或DPTR DPTR+1,A DPTR结束四、实验步骤

单步或用断点方式运行程序,检查2002H内容变化情况。

实验四 查找相同数个数

一、实验目的

熟悉汇编语言编程。

二、实验内容

在2000H~200FH的N个单元中填入零,运行本程序后检查2100H中是

否为N。

三、实验程序框图 四、实验步骤

在2000H~200FH的几个单元中填入零,运行本程序后检查2100H中是否是几个单元数。

五、思考

修改程序,查找其它内容。

1

单片机实验讲义

开始查找字节数10H R0相同字数初值00H R1 2000H DPTR开始(DPTR) AA=00H?R1+1 R1是(20H) A散转表首址 DPTR(A)*2 ADPTR+1 DPTRR0-1=00H?结束否散转至A+DPTR处

0字循环1字循环2字循环3字循环 实验五 多分支程序

一、实验目的

掌握汇编语言的编程。

二、实验内容

编写程序,根据送入的数据转移运行。

三、实验程序框图及参考程序

ORG 0000H LJMP MEMS ORG 0A10H MEMS: MOV A,#43H MOV DPTR,#0FF20H MOVX @DPTR,A MOV A,20H

MOV DPTR,#KKKK ;散转地址 RL A ;(20)*2

JMP @A+DPTR ;转到(20)*2+DPTR KKKK: AJMP MEMSP0 AJMP MEMSP1 AJMP MEMSP2 SJMP MEMSP3

MEMSP0: MOV 20H,#0C0H ;0字循环 LJMP SOX0

MEMSP1: MOV 20H,#0F9H ;1字循环 2

LJMP SOX0

MEMSP2: MOV 20H,#0A4H ;2字循环 LJMP SOX0

MEMSP3: MOV 20H,#0B0H ;3字循环 LJMP SOX0 ORG 0DA0H SOX0: MOV A,20H MOV R0,#22H MOV R1,#21H MOVX @R0,A MOV A,#01H SOX1: CPL A

MOVX @R1,A CPL A

MOV R2,#20H LCALL DELY

单片机实验讲义

RL A ; 显示字程序

SJMP SOX1 DELY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H

DJNZ R2,DEL3 POP 02H

DJNZ R2,DEL2 POP 02H

DJNZ R2,DELY RET END

四、实验步骤

在20H中分次送入00.01.02.03,每次运行程序后,观察数码管上数字循环情况。

硬件实验一 P1口亮灯实验

一、 实验目的

(l)学习P1口的使用方法; (2)学习延时子程序的编写。

二、实验内容

P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

三、实验程序框图及参考程序

开始P1口初始化点亮一位发光二极管左移一位循环

ORG 0000H LJMP SE18 ORG 0790H

SE18: MOV P1,#0FFH ;送P1口 LO34: MOV A,#0FEH;L1发光二极管点亮

LO33: MOV P1,A

LCALL SE19 ;延时 RL A ;左移位 SJMP LO33 ;循环 ORG 07A0H

SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35

3

单片机实验讲义

DJNZ R6,LO36 ;延时 RET

END

四、 实验接线图 五、 实验步骤

P1.0~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。

六、 思考

改变延时常数,使发光二极管闪亮时间改变。 修改程序,使发光二极管闪亮移位方向改变。

硬件实验二

一、实验目的:

P1口转弯灯实验

进一步了解P1口的使用,学习汇编语言编程方法及调试技巧。

二、实验内容

P1.0 开关接5V,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮,P1.0,P1.1开关同时接5V或接地时,转弯灯均不闪亮。

三、实验程序框图及参考程序

开始关灯N只是P1.0高吗Y只是P1.1高吗Y标志位为1吗N开右灯关左灯延时,置标志位Y标志位为1吗N开左灯关右灯延时,置标志位N关灯关灯延时,清标志位延时,清标志位ORG 0000H LJMP PX00 ORG 0C30H

PX00: MOV P1,#0FFH ;初始化 PX03: MOV A,P1 MOV B,A ANL A,#03H CJNE A,#01H,PX01 ;只是P1.0为高? JB 00H,PX04 ;闪烁标志位 CLR P1.4

CLR P1.5 ;开右灯 4

SETB P1.6

SETB P1.7 ;关左灯 MOV R2,#20H

LCALL DELY ;延时 SETB 00H ;置标志位 LJMP PX03 ;继续查找状态 PX04: SETB P1.4 SETB P1.5

SETB P1.6 ;关灯 SETB P1.7

单片机实验讲义

MOV R2,#20H

LCALL DELY ;延时 CLR 00H ;清标志位

AJMP PX03 ;继续查找状态

PX01: CJNE A,#02H,PX02;只是P1.1为高吗?

JB 01H,PX05 ;判标志位 SETB P1.4

SETB P1.5 ;开左灯 CLR P1.6

CLR P1.7 ;关右灯 MOV R2,#20H

LCALL DELY ;延时 SETB 01H ;置标志位 LJMP PX03 ;继续查找 PX05: SETB P1.4

POP 02H

DJNZ R2,DEL3 POP 02H

DJNZ R2,DEL2

SETB P1.5

SETB P1.6 ;关灯 SETB P1.7 MOV R2,#20H

LCALL DELY ;延时 CLR 01H ;清标志位 LJMP PX03 ;继续查找状态 PX02: SETB P1.4 SETB P1.5

SETB P1.6 ;关灯 SETB P1.7

LJMP PX03 ;继续 DELY: PUSH 02H DEL2: PUSH 02H

DEL3: PUSH 02H ; 延时 DEL4: DJNZ R2,DEL4

POP 02H DJNZ R2,DELY RET END

四、实验接线图

五、实验步骤

P1.0 接K1,P1.1接K2,P1.4~P1.7接L1、L5、L9、L13,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。

硬件实验三 8255控制交通灯

一、实验目的

进一步了解8255芯片的结构及编程方法,学习模拟交通控制的实现方法。

二、实验内容

用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。

三、实验程序框图及参考程序

5

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4