单片机实验指导

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)38P0.0(AD0)39Vcc 40P1.67P1.78RST
9(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)
21
GND 20
89C52
U42DS35DS36DS37DS38DS39DS40DS41VCC
DS421
2345678510
R111
510R112
510R113
510R114
510R115
510R116
510R117
510R118
START1: RLC A
MOV P1,A
ACALL Delay
SJMP START1
Delay: MOV R5,#2 ;延时
Delay1: MOV R6,#0
Delay2: MOV R7,#0
DJNZ R7,$
DJNZ R6,Delay2
DJNZ R5,Delay1
RET
END
如果读者使用星研集成环境软件,请考虑以下问题?
1、运行程序前,打开变量窗;
2、使用单步进入命令,运行到第六行后,运行过程中变量窗有何变化?将鼠标停留在
A、SP上一秒后,出现什么?,它与变量窗使用场合的区别?
3、第九行是调用延时子程序,如何进入延时子程序(使用单步进入命令)?如何将延时子程序一下子运行完毕(使用单步命令;也可以将光标移到下一行,使用运行到光标处命令;)?单步进入命令与单步命令有何区别?
4、运行几次后,在第十行设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?
5、Delay是一个延时子程序,改变延时常数,使用全速运行命令,显示发生了什么变化?
6、观察寄存器,有哪几种方法?
1)在工作区窗的通用寄存器标签视中;
2)变量窗
3)鼠标停留在寄存器上
4)观察窗
5)寄存器窗
实验二数据传送(RAM–>XRAM)
一、实验目的
熟悉星研集成环境软件或熟悉Keil C51集成环境软件的使用方法。

熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容
1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。

2、编写程序,实现内外部数据段的传送、校验。

三、程序框图
数据传送程序框图
四、实验步骤
在内部RAM 30H ~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM 的1000H ~100FH中的内容。

熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

五、程序清单
;将内部RAM Address1 开始的16个字节送到外部RAM从Address2开始的单元里,再作比较。

Address1 DATA 30H
Address2 XDATA 1000H
ORG 0000H
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H
MOV R0,#Address1
MOV DPTR,#Address2
MOV R7,#10H
STAR1: MOV A,@R0 ;传送
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,STAR1
MOV R0,#Address1
MOV DPTR,#Address2
MOV R7,#10H
STAR2: MOV B,@R0 ;比较
MOVX A,@DPTR
CJNE A,B,STAR3
INC R0
INC DPTR
DJNZ R7,STAR2
SJMP $ ;传送正确
STAR3: SJMP $ ;传送错误
END
如果读者使用星研集成环境软件,请考虑以下问题:
1、运行程序前,打开变量窗、二个存贮器窗(一个选择片内数据;一个选择片外数据,起始地址选择1000H),每个存贮器窗有四个标签,有何好处?;
2、使用单步进入命令,运行到第十四行后,运行过程中变量窗有何变化?将鼠标停留在A、SP、@R0、@DPTR上一秒后,出现什么?,它与变量窗使用场合的区别?
3、将光标移到第十四行上,使用运行到光标处命令,观察运行结果,体会它与单步进入命令的不同处。

4、在二十行上,设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?
5、使用全速运行命令,稍后,点击工具条上停止运行命令按钮,当前执行箭头停在哪一行?运行结果是否正确?它与全速断点运行命令有何区别?
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位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、实验框图
双字节BCD加法程序框图
四、实验步骤
1、连线说明:
2、在F4区的键盘上输入4位被加数、加数
3、结果显示在F4区的数码管上
五、程序清单
EXTRN CODE(Display8, GetBCDKey)
Buffer DATA 30H ;8字节显示缓冲区
F1 BIT 0D1H ;PSW.1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
CLR F1 ;先清除显示,再接收键输入START1: MOV R0,#buffer
MOV A,#4 ;按键次数
LCALL GetBCDKey ;得到双字节十进制数(被加数)
SETB F1 ;接收到第一个键,才清除显示
MOV R0,#buffer+4
MOV A,#4 ;按键次数
LCALL GetBCDKey ;得到双字节十进制数(加数)
MOV A,buffer+1
ADD A,buffer+5
DA A
MOV buffer+5,A
MOV A,buffer
ADDC A,buffer+4
DA A
MOV buffer+4,A
CLR A
RLC A
Display: PUSH ACC ;显示结果
MOV R0,#buffer
MOV A,buffer+5 ;低位
ACALL B1toB2 ;压缩BCD码转换成非压缩BCD码
MOV A,buffer+4 ;高位
ACALL B1toB2
POP ACC ;进位
ACALL B1toB2
MOV @R0,#10H ;最高二位消隐
INC R0
MOV @R0,#10H
MOV R0,#buffer+5
MOV R7,#5
ACALL BlackDisplay ;将高位0消隐
MOV R0,#buffer
LCALL Display8
SJMP START1
;将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2: PUSH ACC
ANL A,#0FH
MOV @R0,A
INC R0
POP ACC
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
RET
BlackDisplay: MOV A,@R0 ;将高位0消隐
JNZ Exit
MOV A,#10H
MOV @R0,A
DEC R0
DJNZ R7,BlackDisplay
Exit: RET
END
D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7
10
RD 5WR 36A09A18RESET 35CS
6
8255
U36
D0D1D2D3D4D5D6D7WR
RD RST
A0
A1
PC5PC6PC7
PC2PC3PC4PC0PC1DS35DS36DS37DS38DS39DS40DS4112345678
VCC
DS42
A0A1
CS
CS1(0F000H)
510
R111510
R112
510R113510R114510R115510R116510R117510R118
六、演示程序
COM_ADD XDATA 0F003H
PA_ADD XDATA 0F000H
PB_ADD XDATA 0F001H
PC_ADD XDATA 0F002H
ORG 0000H
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H
MOV DPTR,#COM_ADD
MOV A,#80H ;PA、PB、PC为基本输出模式
MOVX @DPTR,A
MOV DPTR,#PA_ADD ;灯全熄灭
MOV A,#0FFH
MOVX @DPTR,A
START1: MOV A,#37H
MOVC A,@A+PC
MOVX @DPTR,A ;东西绿灯,南北红灯
ACALL DL5S
MOV R4,#6
START2: MOV A,#30H
MOVC A,@A+PC
MOVX @DPTR,A ;东西绿灯闪烁,南北红灯
ACALL DL500ms
MOV A,#29H
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL500ms
DJNZ R4,START2
MOV A,#23H ;东西黄灯亮,南北红灯
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL3S
MOV A,#1EH ;东西红灯,南北绿灯
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL5S
MOV R4,#6
START3: MOV A,#17H ;东西红灯,南北绿灯闪烁
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL500ms
MOV A,#10H
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL500ms
DJNZ R4,START3
MOV A,#0AH ;东西红灯,南北黄灯亮
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DL3S
SJMP START1
DB 01111110B ;东西绿灯,南北红灯
DB 11111110B ;东西绿灯闪烁,南北红灯
DB 10111110B ;东西黄灯亮,南北红灯
DB 11011011B ;东西红灯,南北绿灯
DB 11011111B ;东西红灯,南北绿灯闪烁
DB 11011101B ;东西红灯,南北黄灯亮DL500ms: MOV R5,#25
DL500ms1: MOV R6,#100
DL500ms2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DL500ms2
DJNZ R5,DL500ms1
RET
DL3S: MOV R4,#6
DL3S1: LCALL DL500ms
DJNZ R4,DL5S1
RET
DL5S: MOV R4,#10
DL5S1: LCALL DL500ms
DJNZ R4,DL5S1
RET
END
七、实验扩展及思考
1、如何对8255的PC口进行位操作?。

相关文档
最新文档