单片机多功能人体秤设计 第11页
MOV 7BH,A
MOV A,#0AH
MOV 7CH,A
MOV A,#00H
ORL A,78H
JNZ BAI
QIAN: MOV A,78H;转化千位BCD码
SUBB A,7AH
MOV 78H,A
JC QIAN1
MOV 40H,TIME3
BAI: MOV A,77H;转化百位BCD码
SUBB A,7BH
MOV 77H,A
JC BAI1
MOV 41H,TIME1
SHI: MOV A,77H;转化十位BCD码
SUBB A,7CH
MOV 77H,A
JC SHI1
MOV 42H,TIME2
LOOP1:CLR P1.6;控制步进电机反转
SETB P1.5;发送脉冲
LCALL DELAY1MS
CLR P1.5
LCALL DELAY1MS
MOV A,73H;脉冲数减一
SUBB A,#01H
MOV 73H,A
JNZ LOOP1;73H是否为0,为0顺序执行,否则跳转
MOV A,74H
JNZ LOOP1;74H是否为0,为0顺序执行,否则跳转
CLR P1.7;使L297停止工作
LJMP $
QIAN1:INC TIME3
AJMP QIAN
BAI1: INC TIME1
AJMP BAI
SHI1: INC TIME2
AJMP SHI1
DELAY1MS:
MOV TIME4,#02H;1MS的延时子程序
D1:MOV TIME5,#248
DJNZ TIME5,$
DJNZ TIME4,D1
RET
主程序
TIME EQU 60H
TIME1 EQU 61H
TIME2 EQU 62H
TIME3 EQU 63H
TIME4 EQU 64H
TIME5 EQU 65H
T-YEAR EQU 48H;时钟芯片数据缓冲区
T-MON EQU 49H
T-DAY EQU 4AH
T-HOUR EQU 4BH
T-MIN EQU 4CH
T-SEC EQU 4DH
DATA BIT P1.0;HD7379的DATA连接与P1.0
CS BIT P1.1;HD7379的CS连接与P1.1
CLK BIT P1.2;HD7379的CLK连接与P1.2
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP INT0
ORG 0013H
LJMP INT1
ORG 0100H
MAIN:SETB TI0
SETB EX0
SETB TI1
SETB EX1
SETB EA
MOV DPTR,#200AH;DS302 初始化
MOV A,
LCALL RDS12887
LOOP:MOV R0,#00H
MOV DPTR,#TABLE
www.751com.cn
LCALL ZL
AJMP MAIN
LOOP3:INC R0
MOV A,#0FH
CJNE A,R0,LOOP5
MOV R0,#00H
LJMP LOOP5
LOOP4:MOV A,#0DH
CJNE A,R0,LOOP3
LCALL SG
LCALL SOUT
SOUT:MOV TMOD,#20H ;设置定时器T1为模式2
MOV TL1,#F3H ;送初值
MOV TH1,#F3H ;
SETB TR1 ;启动定时器
MOV SCON,#0D0H ;设置串行口为模式3,允许接收
MOV PCON,#50H ;设SMOD=1
MOV R0, #40H ;发送数据首地址到R0
MOV R7, #0DH ;数据块长度为送R7
TRS:MOV A, @R0 ;区数据到A中
MOV C, P ;奇偶标志放入C中
MOV TB8,C ;根据奇偶标志PS设置TB8
MOV SBUF,A ;数据送到SBUF,启动发送
WAIT:JBC TI, CONT ;查询TI=1,跳转并清TI为0
SJMP WAIT ;否则TI=0未发送完毕
CONT:INC R0 ;修改数据地址
DJNZ R7,TRS ;一组数据未发送完,继续
RET ;发送完,子程序返回
RDS12887:
MOV DPTR,#200AH;判断DS302中A寄存器的UIP位是否为1如果为1的话读时间数据到缓冲区,否则的话继续查询