P013:
P014:
PRG1: AJMP LCALL AJMP LCALL AJMP MOV LCALL P011
PRG3 ; P3.1=1,P3.0=0 P011
PRG4 ; P3.1=1,P3.0=1 P011
P1,#11111110B DELY
MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL
RET PRG2: MOV LCALL MOV LCALL MOV LCALL MOV LCALL
RET PRG3: MOV LCALL MOV LCALL MOV LCALL MOV
LCALL
P1,#11111101B DELY
P1,#11111011B DELY
P1,#11110111B DELY
P1,#11101111B DELY
P1,#11011111B DELY
P1,#10111111B DELY
P1,#01111111B DELY
P1,#11111100B DELY
P1,#11110011B DELY
P1,#11001111B DELY
P1,#00111111B DELY
P1,#11111110B DELY
P1,#11111100B DELY
P1,#11111000B DELY
P1,#11110000B DELY
11
MOV P1,#11100000B LCALL DELY
MOV P1,#11000000B LCALL DELY
MOV P1,#10000000B LCALL DELY
MOV P1,#00000000B LCALL DELY
RET PRG4: MOV P1,#11100111B LCALL DELY
MOV P1,#11011011B LCALL DELY
MOV P1,#10111101B LCALL DELY
MOV P1,#01111110B LCALL DELY
RET DELY: MOV R7,#10 DEL0: MOV R6,#200 DEL1: MOV R5,#250 DEL2: DJNZ R5,DEL2 ;250×2us =500us DJNZ R6,DEL1 ;200×500us=100ms DJNZ R7,DEL0
;10×100ms=1s
RET END
六、实验步骤
(1)将P3.1、P3.0用导线连至拨动开关K2、K1,将P1.7~P1.0用导线连至L8~L1;(2)拨动K2、K1选择好LED灯的点亮方式;
(3)观察LED灯的点亮情况是否与开关的状态一致。
七、思考题
如何修改程序,可实现更多不同的二极管点亮方式。
12
实验二 定时/计数器实验(脉冲计数)
一、实验目的
熟悉单片机内部定时/计数器的功能,掌握定时/计数器的初始化编程方法。
二、实验内容
将定时/计数器T0设为计数器方式,对外部输入(P3.4)的脉冲序列进行计数,并送显示器显示。计满数时,将P1.0置为低电平发出提示信号,延时后恢复P1.0为高电平。
三、实验接线图
将P3.4接C2区(单脉冲与时钟模块)的“二极管输出模块)的L1端。
”或“
”端,P1.0接E5区(发光
单脉冲电路
四、实验程序框图
13
主程序及中断服务程序流程图
五、程序清单 文件名:DPJ02.ASM
ORG 0000H LJMP MAIN ORG 000BH
LJMP TINT ;转中断服务程序
ORG 0100H
MAIN: MOV SP,#53H ;设置堆栈
MOV R0,#79H ;显示缓冲区清零 MOV R7,#06H
MOV A,#00H DIPP: MOV @R0,A INC R0
DJNZ R7,DIPP SETB P1.0
MOV TMOD,#06H ;置T0工作方式 MOV TH0,#0FBH
MOV TL0,#0FBH ;计数初值送计数器
14
XIAN: SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 MOV A,TL0 SUBB A,#0FAH ANL A,#0FH MOV 79H,A LCALL DIS
AJMP XIAN ; DIS: PUSH DPH PUSH DPL SETB RS1
MOV P2,#0FFH
MOV A,#43H MOV R1,#20H ;FF20H MOVX @R1,A
MOV R1,#21H ;FF21H MOV A,#0FFH ; MOVX @R1,A
MOV R0,#7EH ; MOV R2,#20H ;00100000B MOV R3,#00H
MOV DPTR,#LS0
LS2: MOV A,@R0 ; MOVC A,@A+DPTR ; MOV R1,#22H ;8155PB MOVX @R1,A ; MOV A,R2 ; DEC R1 ; CPL A ; MOVX @R1,A ; CPL A
DEC R0 ;LS1: DJNZ R3,LS1 ; CLR C
RRC A ; MOV R2,A ; JNZ LS2 ;
INC R1 ;
;8155循环显示计数值 的定时器停止计数,PA、PB输出,PC输入为8155控制口地址 为8155PA口地址(字位口) 关显示 显示缓冲区首地址送R0
(位选码)从右向左显示 取待显示的数据 查表(段码)
口地址(字形口) 输出段码 取位选码 指向8155PA口
位选码取反(外部有反向驱动器75451) 输出位码 取下一位数据 延时 修改位选码(准备显示下一位数据) 保存
六位显示完否? 指向8155PB口
15