单片机实验讲义
实验三 拼字程序
一、实验目的
进一步掌握汇编语言设计和调试方法。
开始二、实验内容
把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