📄 sun.asm
字号:
RET ;子程序调用结束
NOP;
NOP;
LJMP ERR;
;
;*********************************
; 取A/D转换数据至70H内存单元 *
;*********************************
MOVD: SETB P2.5 ;8090输出允许
MOV A,P0 ;将A/D转换值移入A
MOV @R0,A ;放入70H内存单元
CLR P2.5 ;关闭8090输出
CLR A ;A/D转换结束,恢复端口,累加器A清零
NOP ;
MOV A,#0FFH ;累加器A置1
MOV P0,A ; P0口置1
MOV P1,A ; P1口置1
RET ;取A/D转换数据结束
NOP;
NOP;
LJMP ERR;
;
;**********************************
;* 比较采样值子程序 *
;**********************************
AQQ: MOV A,70H;
CLR C;
SUBB A,#73H;
JC Q1;
MOV A,70H;
SUBB A,#7DH;
JNC Q2;
CLR P2.7;在11.5V和12.5V之间开启放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q2: CLR P2.7;大于12.5V时开启放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q1: SETB P2.7;小于11.5V时关闭放电开关
MAIN0: LCALL DISPLAY ;显示数据一次
LCALL TEST ;测量一次
LCALL ATT0 ;
LCALL AQQ0 ;
NOP ;
NOP ;
AJMP MAIN0 ;返回MAIN循环
NOP ;PC值出错处理
NOP ;空操作
NOP ;空操作
LJMP START ;重新复位起动
NOP;
NOP;
LJMP ERR;
;
;******************************************************
AQQ0: MOV A,70H;
CLR C;
SUBB A,#73H;
JC Q10;
MOV A,70H;
SUBB A,#7DH;
JNC Q20;
SETB P2.7;在11.5V和12.5V之间关闭放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q10: SETB P2.7;小于11.5V时关闭放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q20: CLR P2.7;大于12.5V时开启放电开关
LJMP MAIN;
NOP;
NOP;
LJMP ERR;
;
;***********************************************
ATT0: MOV A,70H;
CLR C;
SUBB A,#87H;
JC TK10;
MOV A,70H;
SUBB A,#91H;
JNC TK20;
CLR P2.6;在13.5V和14.5V之间开启充电开关
RET;
NOP;
NOP;
LJMP ERR;
TK10: CLR P2.6;小于13.5V时开启充电开关
RET;
NOP;
NOP;
LJMP ERR;
TK20: SETB P2.6;大于14.5V时关闭充电开关
RET;
NOP;
NOP;
LJMP ERR;
;
;***********************************************
ATT: MOV A,70H;
CLR C;
SUBB A,#87H;
JC TK1;
MOV A,70H;
SUBB A,#91H;
JNC TK2;
CLR P2.6;在13.5V和14.5V之间开启充电开关
RET;
NOP;
NOP;
LJMP ERR;
TK1: CLR P2.6;小于13.5V时开启充电开关
RET;
NOP;
NOP;
LJMP ERR;
TK2: SETB P2.6;大于14.5V时关闭充电开关
MAIN1: LCALL DISPLAY ;显示数据一次
LCALL TEST ;测量一次
LCALL ATT1 ;
LCALL AQQ1 ;
NOP ;
NOP ;
AJMP MAIN1 ;返回MAIN循环
NOP ;PC值出错处理
NOP ;空操作
NOP ;空操作
LJMP START ;重新复位起动
NOP;
NOP;
LJMP ERR;
;
;************************************************************
AQQ1: MOV A,70H;
CLR C;
SUBB A,#73H;
JC Q11;
MOV A,70H;
SUBB A,#7DH;
JNC Q22;
CLR P2.7;在11.5V和12.5V之间开启放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q11: SETB P2.7;小于11.5V时关闭放电开关
RET;
NOP;
NOP;
LJMP ERR;
Q22: CLR P2.7;大于12.5V时开启放电开关
RET;
NOP;
NOP;
LJMP ERR;
;
;***********************************************
ATT1: MOV A,70H;
CLR C;
SUBB A,#87H;
JC TK11;
MOV A,70H;
SUBB A,#91H;
JNC TK22;
SETB P2.6;在13.5V和14.5V之间关闭充电开关
RET;
NOP;
NOP;
LJMP ERR;
TK11: CLR P2.6;小于13.5V时开启充电开关
LJMP MAIN;
TK22: SETB P2.6;大于14.5V时关闭充电开关
RET;
NOP;
NOP;
LJMP ERR;
ERR: CLR ET0;
POP ACC;
POP ACC;
CLR A;
PUSH ACC;
PUSH ACC;
RETI;
NOP;
NOP;
LJMP ERR;
ORG 07FAH;
NOP;
NOP;
LJMP ERR;
LJMP ERR;
ORG 00FFAH;
NOP;
NOP;
LJMP ERR;
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -