⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sun.asm

📁 用89C52制作太阳电池数显充放电控制器原程序.说明:70H内存单元存放采样值
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                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 + -