久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3239|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

用 STC 12C5A60S2 DIY可充電電池測試裝置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 haikuotian 于 2020-5-5 19:45 編輯

突發(fā)奇想,自己DIY一個(gè)主要用于測試電池的充放電性能和繪制特性曲線的單片機(jī)制作
1.要能顯示電壓和電流,2.能充電和放電,3.能和計(jì)算機(jī)通信是主要的。
電路原理圖:



印制板圖







繪制的放電曲線

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:253767 發(fā)表于 2020-5-4 07:05 | 只看該作者
謝謝分享!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:280206 發(fā)表于 2020-5-5 06:26 | 只看該作者
已經(jīng)實(shí)驗(yàn)通過,性能滿意,還有局部電路需要降低功耗
回復(fù)

使用道具 舉報(bào)

地板
ID:328014 發(fā)表于 2020-5-5 14:21 | 只看該作者
好東東 能分享下源程序嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:624444 發(fā)表于 2020-5-5 17:04 | 只看該作者
好東西,能分享一下資料嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:280206 發(fā)表于 2020-5-5 20:17 | 只看該作者
本帖最后由 haikuotian 于 2020-5-5 20:40 編輯
還在改寫,完善中

                         ;可充電電池測試器程序2020 05 1 STC12C5A60S2
        ORG 0000H         ;
          LJMP CHUSI
          ORG 0003H
          RETI
          ORG 000BH          ;定時(shí)器0中斷向量用于顯示
          LJMP XIANSHI       ;點(diǎn)亮8位顯示器            
          ORG 0013H
          RETI
          ORG 001BH         ;定時(shí)器1中斷向量
          RETI
          ORG 0023H         ;串口中斷向量
          RETI              ;串口中斷響應(yīng)
          RETI
          NOP
        NOP
        NOP
        NOP

        ORG 0064H         ;初始化和定義寄存器用途
CHUSI:  CLR A             ;清零
          MOV 87H,A         ;置CPU功率方式
          MOV IE,A          ;禁止中斷
          MOV IP,A          ;禁止中斷優(yōu)先控制
          MOV SCON,A        ;關(guān)閉串行控制
          MOV TMOD,A        ;計(jì)數(shù)器控制
          MOV TCON,A        ;計(jì)數(shù)器控制
        SETB P1.0         ;放電電流檢測片選IC5 0有效
        SETB P1.2         ;充電電流檢測片選IC3 0有效
        SETB P1.4         ;電壓檢測片選IC4 0有效
        SETB P1.1         ;SDO數(shù)據(jù)線
        CLR  P1.3         ;SCLK 讀取用移位脈沖 超過高電平2ms會(huì)休眠
        SETB P1.5         ;空 用于測試
        SETB P1.6         ;溫度讀取
        SETB P1.7         ;放電控制 0放 1停
        SETB P3.2         ;充電控制 0充 1停
        MOV P0,#0FFH      ;用于顯示劃驅(qū)動(dòng) 低有效
        MOV P2,#0FFH      ;用于顯示位驅(qū)動(dòng)P2.7 第一位 P2.0 第8位
        MOV 20H,#0H       ;   A/D 轉(zhuǎn)換暫存數(shù)據(jù)高8位07-00
        MOV 21H,#0H       ;   A/D 轉(zhuǎn)換暫存數(shù)據(jù)低8位0F-08
        MOV 22H,#0H       ;02 電壓A/D1 1轉(zhuǎn)換后數(shù)據(jù)高8位
        MOV 23H,#0H       ;03 電壓A/D1 1轉(zhuǎn)換后數(shù)據(jù)低8位   
        MOV 24H,#0H       ;04 電流A/D2 轉(zhuǎn)換后數(shù)據(jù)高8位  
        MOV 25H,#0H       ;05 電流A/D2 轉(zhuǎn)換后數(shù)據(jù)高8位  
        MOV 26H,#0H       ;06 電壓A/D1 2轉(zhuǎn)換后數(shù)據(jù)高8位
        MOV 27H,#0H       ;07 電壓A/D1 2轉(zhuǎn)換后數(shù)據(jù)低8位   
        MOV 28H,#0H       ;08 18B20
        MOV 29H,#0H       ;09 18B20
        MOV 2AH,#1H       ;10 存預(yù)設(shè)充電終止電壓 伏特位
        MOV 2BH,#5H       ;11 存預(yù)設(shè)充電終止電壓 百毫伏特位
        MOV 2CH,#6H       ;12 存預(yù)設(shè)充電終止電壓 十毫伏特位
        MOV 2DH,#7H       ;13 存預(yù)設(shè)充電終止電壓 毫伏特位
        MOV 2EH,#3H       ;14 充/放電標(biāo)志   3停/1充/2放        
        MOV 2FH,#0H       ;15
        MOV 30H,#0H       ;16 顯示計(jì)數(shù)器
        MOV 31H,#0H       ;17 顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 伏特位
        MOV 32H,#0H       ;18 顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 百毫伏特位
        MOV 33H,#0H       ;19 顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 十毫伏特位
        MOV 34H,#0H       ;20 顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 毫伏特位            
        MOV 35H,#0BFH     ;21 顯示存儲器 顯示設(shè)定狀態(tài) A劃/D劃  FEH/F7H
        MOV 36H,#0H       ;22 顯示存儲器 模數(shù)轉(zhuǎn)換后電流 百毫安培位  
        MOV 37H,#0H       ;23 顯示存儲器 模數(shù)轉(zhuǎn)換后電流 十毫安培位
        MOV 38H,#0H       ;24 顯示存儲器 模數(shù)轉(zhuǎn)換后電流 毫安培位
        MOV 39H,#8H       ;25 充/過放計(jì)數(shù)器
        MOV 3AH,#0H       ;26 存預(yù)設(shè)放電終止電壓 伏特位
        MOV 3BH,#8H       ;27 存預(yù)設(shè)放電終止電壓 百毫伏特位
        MOV 3CH,#7H       ;28 存預(yù)設(shè)放電終止電壓 十毫伏特位
        MOV 3DH,#6H       ;29 存預(yù)設(shè)放電終止電壓 毫伏特位
        MOV 3EH,#0H       ;30 充/放電計(jì)數(shù)器 小時(shí)(16進(jìn)制)
        MOV 3FH,#0H       ;31 充/放電計(jì)數(shù)器 分鐘(16進(jìn)制)
        MOV 40H,#0H       ;32 充/放電計(jì)數(shù)器 秒(60進(jìn)制)
        MOV 41H,#0H       ;33 發(fā)送代碼和
        MOV 42H,#0H       ;34 臨時(shí)計(jì)數(shù)器
        MOV 43H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 44H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 45H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 46H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 47H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 48H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 49H,#0H       ;臨時(shí)計(jì)數(shù)器
        MOV 91H,#0H       ;設(shè)定P1.7輸出推挽模式 STC12C5A60S2 P1M1
        MOV 92H,#80H      ;設(shè)定P1.7輸出推挽模式 STC12C5A60S2 P1M0
        MOV 0B1H,#0H      ;設(shè)定P3.2輸出推挽模式 STC12C5A60S2 P3M1
        MOV 0B2H,#04H     ;設(shè)定P3.2輸出推挽模式 STC12C5A60S2 P3M0
        MOV 0BBH,#70H     ;設(shè)定P4(C0) -4-5-6 I/O 模式端口在 C4H C5H C6H
        MOV 0B3H,#0H      ;設(shè)定P4   普通弱上拉
        MOV 0B4H,#0H      ;設(shè)定P4   普通弱上拉
        MOV 0C1H,#0H      ;不使用看門狗
        MOV SP,#80H       ;設(shè)置棧底
        SETB TR0          ;使用11059200晶振
        MOV 87H,#0H       ;波特率不加倍
        MOV 8EH,#11H      ;使用獨(dú)立波特率發(fā)生器STC12C5A60S2
        MOV 9CH,#0F4H     ;獨(dú)立波特率發(fā)生器重裝寄存器(2400BT)
        MOV 8AH,#0H       ;定時(shí)器0 16位計(jì)數(shù)低8位
        MOV 8CH,#0F7H     ;16位計(jì)數(shù)高8位 4毫秒中斷 顯示用
                          ;定時(shí)器0 方式2 8位自動(dòng)重裝入定時(shí)器1 工作1 16位計(jì)數(shù)器
        NOP               ;   TMOD       GATE  C/T M1 M0 GATE C/T M1 M0
        MOV TMOD,#11H     ;定時(shí)/計(jì)數(shù)       0     0  0  1   0    0  0  1
                          ;
          NOP               ;   TCON       TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
        MOV TCON,#10H     ;啟動(dòng)定時(shí)器     0   0   0   1   0   0   0   0
                          ;  SCON       SM0 SM1 SM2 REN TB8 RB8 TI RI
        MOV SCON,#40H     ;              0   1   0   0   0   0   0  0
        MOV IP,#0H        ;中斷優(yōu)先控制  X  X  PT2  PS  PT1  PX1  PT0  PX0   
                          ;             0  0   0    0   0    0    0    0
                          ;
                            ;中斷控制   EA - ET2 ES ET1 EX1 ET0 EX0
        MOV IE,#10000010B;            1    0  0   0   0   1   0
                          ;
        NOP
        NOP
        NOP

KAISHI:  NOP               ;顯示開機(jī)畫面12345678
         MOV 0C1H,#0H      ;不使用看門狗
         MOV 31H,#1H       ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 伏特位
         MOV 32H,#2H       ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 百毫伏特位
         MOV 33H,#3H       ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 十毫伏特位
         MOV 34H,#4H       ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 毫伏特位            
         MOV 35H,#92H      ;顯示存儲器 顯示設(shè)定狀態(tài) A劃/D劃  FEH/F7H
         MOV 36H,#6H       ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 百毫安培位  
         MOV 37H,#7H       ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 十毫安培位
         MOV 38H,#8H       ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 毫安培位
         MOV 44H,#30       ;延時(shí)3秒
YS1:    LCALL YSCX100     ;延時(shí)100mS
         DJNZ 44H,YS1      ;重復(fù)30次 滅一下
         MOV 31H,#0FFH     ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 伏特位
         MOV 32H,#0FFH     ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 百毫伏特位
         MOV 33H,#0FFH     ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 十毫伏特位
         MOV 34H,#0FFH     ;顯示存儲器 存模數(shù)轉(zhuǎn)換后電壓 毫伏特位            
         MOV 35H,#0BFH     ;顯示存儲器 顯示設(shè)定狀態(tài) A劃/D劃  FEH/F7H
         MOV 36H,#0FFH     ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 百毫安培位  
         MOV 37H,#0FFH     ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 十毫安培位
         MOV 38H,#0FFH     ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 毫安培位
         MOV 0C1H,#0H      ;不使用看門狗
         MOV 44H,#20       ;延時(shí)2秒
YS2:    LCALL YSCX100     ;延時(shí)100mS
         DJNZ 44H,YS2      ;重復(fù)20次
         LCALL DYCS2       ;無顯示測電壓 估算電源電壓
         NOP
         MOV A,#60H         ;大約2.4伏
         CJNE A,26H,P26DX  ;和26H數(shù)據(jù)比較2.5伏分界
         LJMP JC012
P26DX:   JNC JC012         ;如果超過2.4 就設(shè)成4.312 和 2.876
         MOV 2AH,#4H       ;存預(yù)設(shè)充電終止電壓 伏特位
         MOV 2BH,#3H       ;存預(yù)設(shè)充電終止電壓 百毫伏特位
         MOV 2CH,#1H       ;存預(yù)設(shè)充電終止電壓 十毫伏特位
         MOV 2DH,#2H       ;存預(yù)設(shè)充電終止電壓 毫伏特位
         MOV 3AH,#2H       ;存預(yù)設(shè)放電終止電壓 伏特位
         MOV 3BH,#8H       ;存預(yù)設(shè)放電終止電壓 百毫伏特位
         MOV 3CH,#7H       ;存預(yù)設(shè)放電終止電壓 十毫伏特位
         MOV 3DH,#6H       ;存預(yù)設(shè)放電終止電壓 毫伏特位
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
JC012:   NOP               ;程序從這里開始
         MOV 0C1H,#0H      ;不使用看門狗
         NOP               ;檢查按鍵 S1(P36)S2(P37)S3(P35)S4(P34)S5(P33)
ANJIAN:  NOP
         JNB P3.6,S1      ;檢查S1 0轉(zhuǎn)移         
         JNB P3.7,S2      ;檢查S2 0轉(zhuǎn)移                           
         JNB P3.5,S3      ;檢查S3 0轉(zhuǎn)移  
         JNB P3.4,S4      ;檢查S4 0轉(zhuǎn)移         
         JNB P3.3,S5      ;檢查S5 0轉(zhuǎn)移           
AJFH:    LJMP JC0121      ;沒有按鍵 轉(zhuǎn)移到工作           
S1:      LJMP S1C
S2:      LJMP S2C
S3:      LJMP S3C
S4:      LJMP S4C
S5:      LJMP S5C
         NOP
S1C:     LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         JB P3.6,AJFH      ;檢查S1 1轉(zhuǎn)移 沒按則轉(zhuǎn)移         
         MOV A,2EH          ;2E存工作模式
         CJNE A,#1,XSF2     ;顯充電終止電壓
         MOV 31H,2AH        ;充電
         MOV 32H,2BH
         MOV 33H,2CH
         MOV 34H,2DH
         LJMP S1T2
XSF2:    CJNE A,#2,XSF3     ;顯放電終止電壓
         MOV 31H,3AH        ;放電
         MOV 32H,3BH
         MOV 33H,3CH
         MOV 34H,3DH
         LJMP S1T2
XSF3:    LJMP JC0121
S1T2:    JB P3.7,S1T3        ;若S2未按 則檢查S3 1轉(zhuǎn)移 調(diào)第一位         
         LCALL YSCX100      ;調(diào)用防抖 顯示終止電壓
         MOV A,2EH           ;若按 則判2E是1或2   
         CJNE A,#1,TZFD1     ;調(diào)整充電終止電壓
         INC 2AH            
         MOV A,2AH
         CJNE A,#5,S1T1XH
         MOV 2AH,#1
S1T1XH:  MOV 31H,2AH         ;顯充電終止值
         MOV 32H,2BH
         MOV 33H,2CH
         MOV 34H,2DH
S1FH1:   LJMP JC012
TZFD1:   CJNE A,#2,S1FH1     ;調(diào)整放電終止電壓
         DEC 3AH
         MOV A,3AH
         CJNE A,#0FFH,S1T2XH
         MOV 3AH,#4
S1T2XH:  MOV 31H,3AH        ;放電
         MOV 32H,3BH
         MOV 33H,3CH
         MOV 34H,3DH
         LJMP JC012          ;顯充電終止值
S1T3:    JB P3.5,S1T4        ;若S2未按 則檢查S3 1轉(zhuǎn)移 調(diào)第二位                  
         LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         MOV A,2EH           ;若按 則判2E是1或2   
         CJNE A,#1,TZFD2     ;調(diào)整充電終止電壓
         INC 2BH
         MOV A,2BH
         CJNE A,#10,S1T3XH
         MOV 2BH,#0
S1T3XH:  MOV 31H,2AH         ;顯充電終止值
         MOV 32H,2BH
         MOV 33H,2CH
         MOV 34H,2DH
         LJMP JC012
TZFD2:   CJNE A,#2,S1FH1     ;調(diào)整放電終止電壓
         DEC 3BH
         MOV A,3BH
         CJNE A,#0FFH,S1T4XH
         MOV 3BH,#9
S1T4XH:  MOV 31H,3AH        ;放電
         MOV 32H,3BH
         MOV 33H,3CH
         MOV 34H,3DH
         LJMP JC012          ;顯充電終止值
S1T4:    JB P3.4,S1T5        ;若S2未按 則檢查S3 1轉(zhuǎn)移 第三位         
         LCALL YSCX100       ;調(diào)用防抖
         MOV A,2EH           ;若按 則判2E是1或2   
         CJNE A,#1,TZFD3     ;調(diào)整充電終止電壓
         INC 2CH
         MOV A,2CH
         CJNE A,#10,S1T5XH
         MOV 2CH,#0
S1T5XH:  MOV 31H,2AH         ;顯充電終止值
         MOV 32H,2BH
         MOV 33H,2CH
         MOV 34H,2DH
         LJMP JC012
TZFD3:   CJNE A,#2,S1FH      ;調(diào)整放電終止電壓
         DEC 3CH
         MOV A,3CH
         CJNE A,#0FFH,S1T6XH
         MOV 3CH,#9
S1T6XH:  MOV 31H,3AH        ;放電
         MOV 32H,3BH
         MOV 33H,3CH
         MOV 34H,3DH
         LJMP JC012        ;顯充電終止值

S1T5:    JB P3.3,S1T6        ;若S2未按 則檢查S3 1轉(zhuǎn)移 第四位         
         LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         MOV A,2EH           ;若按 則判2E是1或2   
         CJNE A,#1,TZFD5     ;調(diào)整充電終止電壓
         INC 2DH
         MOV A,2DH
         CJNE A,#10,S1T7XH
         MOV 2DH,#0
S1T7XH:  MOV 31H,2AH         ;顯充電終止值
         MOV 32H,2BH
         MOV 33H,2CH
         MOV 34H,2DH
         LJMP JC012
TZFD5:   CJNE A,#2,S1FH      ;調(diào)整放電終止電壓
         DEC 3DH
         MOV A,3DH
         CJNE A,#0FFH,S1T8XH
         MOV 3DH,#9
S1T8XH:  MOV 31H,3AH        ;放電
         MOV 32H,3BH
         MOV 33H,3CH
         MOV 34H,3DH
S1T6:    NOP
S1FH:    LJMP JC012   
S5CFH:   LJMP JC0121

S5C:     LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         JB P3.3,S5CFH     ;檢查S5 1轉(zhuǎn)移 沒按則轉(zhuǎn)移 防抖
         MOV 2EH,#1       ;充電
         MOV 35H,#0FEH
         MOV 3EH,#0H       ;充/放電計(jì)數(shù)器 小時(shí)(16進(jìn)制)
         MOV 3FH,#0H       ;充/放電計(jì)數(shù)器 分鐘(16進(jìn)制)
         MOV 40H,#0H       ;充/放電計(jì)數(shù)器 秒(60進(jìn)制)
         MOV 39H,#0        ;過濾器
         LJMP JC0121
S4C:     LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         JB P3.4,S1FH      ;檢查S2 1轉(zhuǎn)移 沒按則轉(zhuǎn)移
         MOV 2EH,#2        ;放電
         MOV 35H,#0F7H
         MOV 3EH,#0H       ;充/放電計(jì)數(shù)器 小時(shí)(16進(jìn)制)
         MOV 3FH,#0H       ;充/放電計(jì)數(shù)器 分鐘(16進(jìn)制)
         MOV 40H,#0H       ;充/放電計(jì)數(shù)器 秒(60進(jìn)制)
         MOV 39H,#0        ;過濾器
         LJMP JC0121
S3C:     LCALL YSCX100     ;調(diào)用防抖 顯示終止電壓
         JB P3.5,JC0121    ;檢查S2 1轉(zhuǎn)移 沒按則轉(zhuǎn)移
         MOV 2EH,#3        ;暫停
         MOV 35H,#0BFH
         MOV 3EH,#0H       ;充/放電計(jì)數(shù)器 小時(shí)(16進(jìn)制)
         MOV 3FH,#0H       ;充/放電計(jì)數(shù)器 分鐘(16進(jìn)制)
         MOV 40H,#0H       ;充/放電計(jì)數(shù)器 秒(60進(jìn)制)
         MOV 39H,#0        ;過濾器
         LJMP JC0121
         NOP
         NOP
         NOP
S2C:     LJMP CHUSI
         NOP
         NOP
         NOP
JC0121:  MOV 0C1H,#0H       ;不使用看門狗
         NOP                ;檢查2EH有關(guān)鍵字 1 2 3            
         MOV A,2EH          ;讀2EH到A        
         CJNE A,#3,JCS1     ;2EH是0 轉(zhuǎn)移到空操作
         LJMP KCZ
JCS1:    CJNE A,#1,JCS2     ;2EH 不是1 轉(zhuǎn)移到放電操作
         LJMP CDCZ
JCS2:    CJNE A,#2,JCS3     
         LJMP FDCZ
JCS3:    LJMP KCZ
         NOP
         NOP
         NOP
CDCZ:    LJMP CDCZKS         ;轉(zhuǎn)到充電操作
         NOP
FDCZ:    LJMP FDCZKS         ;2EH 是2 轉(zhuǎn)移到放電操作
         NOP
KCZ:     NOP                 ;轉(zhuǎn)到空操作
         NOP                 ;空操作 測試電壓,發(fā)送數(shù)據(jù),延時(shí)
         SETB P3.2           ;低電平充電,高停
         SETB P1.7           ;低電平放電 高停
         LCALL DYCS1         ;監(jiān)測電池電壓 P14
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
         LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
         LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
CXS:    MOV 36H,#0H         ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 百毫安培位  
         MOV 37H,#0H         ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 十毫安培位
         MOV 38H,#0H         ;顯示存儲器 模數(shù)轉(zhuǎn)換后電流 毫安培位
         MOV 24H,#0          ;清除殘存
         MOV 25H,#0          ;清除殘存
         MOV 26H,#0          ;清除殘存
         MOV 27H,#0          ;清除殘存
         LCALL FS232         ;調(diào)用發(fā)送232程序      
         LCALL WDCS          ;調(diào)用溫度測試程序
         LJMP JC012          ;轉(zhuǎn)到下一周期
         NOP
         NOP
         NOP
CDCZKS: NOP                 ;充電操作 測試電壓,發(fā)送數(shù)據(jù),延時(shí)
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DYCS1         ;調(diào)用電壓轉(zhuǎn)換程序 無充電測試 P14
        NOP                 ;以下判別充電到位過充
        MOV A,2AH           ;讀取預(yù)存千位
        CJNE A,31H,KYCD     ;不相等 轉(zhuǎn)移
        MOV A,2BH           ;讀取預(yù)存百位
        CJNE A,32H,KYCD     ;不相等 轉(zhuǎn)移
        MOV A,2CH           ;讀取預(yù)存十位
        CJNE A,33H,KYCD     ;不相等 轉(zhuǎn)移
        MOV A,2DH           ;讀取預(yù)存?zhèn)位
        CJNE A,34H,KYCD     ;不相等 轉(zhuǎn)移
BNCD:   NOP
        CLR C               ;  
        INC 39H             ;過充計(jì)數(shù)
        MOV A,39H           ;
        CJNE A,#10,KYCD1    ;比較過充計(jì)數(shù)
        MOV 35H,#0BFH
        MOV 39H,#0          ;滿足條件
        MOV 2EH,#3H         ;全相等 停充
        LJMP JC012          ;不充電 轉(zhuǎn)移
KYCD:   JC BNCD             ;大于比較值 不能充電
KYCD1:  NOP                 ;充電
        NOP
        NOP                 ;
        CLR P3.2            ;低電平充電,高停
        SETB P1.7           ;低電平放電 高停
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DLCSC         ;調(diào)用電流轉(zhuǎn)換程序1 充電 P12
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL FS232         ;調(diào)用發(fā)送232程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DYCS2         ;調(diào)用電壓轉(zhuǎn)換程序2 有充電測試 P14
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        SETB P3.2           ;高電平充電,低停
        SETB P1.7           ;低電平放電 高停
        LCALL WDCS          ;調(diào)用溫度測試程序
        LCALL JSQCX         ;調(diào)用計(jì)時(shí)程序
        LJMP JC012          ;轉(zhuǎn)到下一周期
        NOP
        NOP
        NOP
FDCZKS:NOP                 ;放電操作 測試電壓,發(fā)送數(shù)據(jù),延時(shí),
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DYCS1         ;調(diào)用電壓轉(zhuǎn)換程序 無放電測試 P14
        NOP
        NOP
        NOP                 ;以下檢查過放
        MOV A,31H           ;讀取預(yù)存千位
        CJNE A,3AH,KYFD     ;不相等 轉(zhuǎn)移
        MOV A,32H           ;讀取預(yù)存百位
        CJNE A,3BH,KYFD     ;不相等 轉(zhuǎn)移
        MOV A,33H           ;讀取預(yù)存十位
        CJNE A,3CH,KYFD     ;不相等 轉(zhuǎn)移
        MOV A,34H           ;讀取預(yù)存?zhèn)位
        CJNE A,3DH,KYFD     ;不相等 轉(zhuǎn)移
BNFD:   NOP
        CLR C
        INC 39H
        MOV A,39H
        CJNE A,#10,KYFD1
        MOV 35H,#0BFH
        MOV 39H,#0
        MOV 2EH,#3H         ;全相等 停放
        LJMP JC012          ;不放電 轉(zhuǎn)移
KYFD:   JC BNFD             ;大于比較值 不能放電
KYFD1:  NOP                 ;放電
        SETB P3.2           ;低電平充電,高停
        CLR P1.7            ;低電平放電 高停
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DLCSF         ;調(diào)用電流轉(zhuǎn)換程序2 P10
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL FS232
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL DYCS2         ;調(diào)用電壓轉(zhuǎn)換程序2 帶電測試 P14
        LCALL YSCX100       ;調(diào)用延時(shí)100毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL YS10          ;調(diào)用延時(shí)10毫秒程序
        LCALL WDCS          ;調(diào)用溫度測試程序
        SETB P3.2           ;低電平充電,高停
        SETB P1.7           ;低電平放電 高停
        LCALL JSQCX         ;調(diào)用計(jì)時(shí)程序
        LJMP JC012          ;轉(zhuǎn)到下一周期
        NOP
        NOP
        NOP
JSQCX:  INC 40H             ;脈沖計(jì)數(shù)器 秒脈沖加1
        MOV A,40H           ;讀秒到累加
        CJNE A,#60,JSFH     ;60秒 進(jìn)位
        MOV 40H,#0          ;秒清零
        MOV 39H,#0          ;充放監(jiān)測延時(shí)清零
        INC 3FH             ;分加1
        MOV A,3FH           ;讀分到累加
        CJNE A,#60,JSFH     ;和60比較
        MOV 3FH,#0          ;等于60 清零
        INC 3EH             ;小時(shí)加1
JSFH:  RET                  ;返回
        NOP
        NOP
        NOP
DYCS1:  NOP                  ;電壓測試程序1 純電壓 送顯
        CLR P1.4             ;IC4 電壓片選線
        NOP
        NOP
        SETB P1.1            ;SDO  數(shù)據(jù)線
        LCALL ADZH1          ;調(diào)用AD轉(zhuǎn)換程序
        SETB P1.4            ;選中 釋放   
        NOP                  ;20H 21H 存電壓 高位和低位(16位)
        CLR P1.3            ; 時(shí)鐘脈沖線~|_  
        NOP
        MOV A,20H           ;
        MOV 22H,A           ;保存至電壓寄存器 高位
        MOV R6,A            ;16位被除數(shù)高8位
        MOV A,21H
        MOV 23H,A           ;保存至電壓寄存器 低位
        MOV R7,A            ;16位被除數(shù)低8位
        LCALL CFDYCX        ;調(diào)用除法電壓程序 并送顯
        RET
        NOP
        NOP
        NOP
        RET                  ;電壓測試結(jié)束
DYCS2:  NOP                  ;電壓測試程序2 帶載電壓 不送顯
        CLR P1.4             ;IC4 電壓片選線
        NOP
        NOP
        SETB P1.1            ;SDO  數(shù)據(jù)線
        LCALL ADZH1          ;調(diào)用AD轉(zhuǎn)換程序
        SETB P1.4            ;撤銷選中     
        NOP                  ;20H 21H 存電壓 高位和低位(16位)
        CLR P1.3             ; 時(shí)鐘脈沖線~|_  
        MOV A,20H            ;
        MOV 26H,A            ;保存至電壓寄存器 高位
        MOV A,21H
        MOV 27H,A            ;保存至電壓寄存器 低位
        RET
        NOP
        NOP
        RET                  ;電壓測試結(jié)束
DLCSC:  NOP                  ;電流測試程序1 送顯
        CLR P1.2             ;IC3 電流片選線
        NOP
        NOP
        SETB P1.1            ;SDO  數(shù)據(jù)線
        LCALL ADZH2          ;調(diào)用AD轉(zhuǎn)換程序
        SETB P1.2            ;選中撤銷     
        NOP                  ;20H 21H 存電壓 高位和低位(16位)
        CLR P1.3             ; 時(shí)鐘脈沖線~|_  
        MOV A,20H            ;
        MOV 24H,A            ;保存至電壓寄存器 高位
        MOV A,21H
        MOV 25H,A            ;保存至電壓寄存器 低位
        MOV R6,24H          ;16位被除數(shù)高8位
        MOV R7,25H          ;16位被除數(shù)低8位
        LCALL CFDLCX        ;調(diào)用除法電流程序 并送顯
        RET

DLCSF: NOP                  ;電流測試程序1
        CLR P1.0             ;IC5 電流片選線
        NOP
        NOP
        SETB P1.1            ;SDO  數(shù)據(jù)線
        LCALL ADZH2          ;調(diào)用AD轉(zhuǎn)換程序
        SETB P1.0            ;釋放選中     
        NOP                  ;20H 21H 存電壓 高位和低位(16位)
        CLR P1.3             ; 時(shí)鐘脈沖線~|_  
        MOV A,20H            ;
        MOV 24H,A            ;保存至電壓寄存器 高位
        MOV A,21H
        MOV 25H,A            ;保存至電壓寄存器 低位
        MOV R6,24H           ;16位被除數(shù)高8位
        MOV R7,25H           ;16位被除數(shù)低8位
        LCALL CFDLCX         ;調(diào)用除法電壓程序 并送顯
        NOP
        NOP
        NOP
        RET                 ;電流測試結(jié)束
ADZH1:  JB P1.1,ADZH1      ;等待轉(zhuǎn)換完成        
        LCALL DYAD         ;D23 調(diào)用讀端口
        MOV 127,C          ;
        LCALL DYAD         ;D22
        MOV 126,C
        LCALL DYAD         ;D21
        MOV 125,C
        LCALL DYAD         ;D20
        MOV 124,C
        LCALL DYAD         ;D19
        MOV 123,C
        LCALL DYAD         ;D18
        MOV 7H,C           ;數(shù)據(jù)送20.7
        LCALL DYAD        ;D17
        MOV 6H,C           ;數(shù)據(jù)送20.6
        LCALL DYAD        ;D16
        MOV 5H,C           ;數(shù)據(jù)送20.5
        LCALL DYAD        ;D15
        MOV 4H,C           ;數(shù)據(jù)送20.4
        LCALL DYAD        ;D14
        MOV 3H,C           ;數(shù)據(jù)送20.3
        LCALL DYAD        ;D13
        MOV 2H,C           ;數(shù)據(jù)送20.2
        LCALL DYAD        ;D12
        MOV 1H,C           ;數(shù)據(jù)送20.1
        LCALL DYAD        ;D11
        MOV 0H,C           ;數(shù)據(jù)送20.0
        LCALL DYAD        ;D10
        MOV 0FH,C          ;數(shù)據(jù)送21.7
        LCALL DYAD        ;D9
        MOV 0EH,C          ;數(shù)據(jù)送21.6
        LCALL DYAD        ;D8
        MOV 0DH,C          ;數(shù)據(jù)送21.5
        LCALL DYAD        ;D7
        MOV 0CH,C          ;數(shù)據(jù)送21.4
        LCALL DYAD        ;D6
        MOV 0BH,C          ;數(shù)據(jù)送21.3
        LCALL DYAD        ;D5
        MOV 0AH,C          ;數(shù)據(jù)送21.2
        LCALL DYAD        ;D4
        MOV 9H,C           ;數(shù)據(jù)送21.1
        LCALL DYAD         ;D3
        MOV 8H,C           ;數(shù)據(jù)送21.0
        LCALL DYAD         ;D2
        MOV 122,C
        LCALL DYAD         ;D1
        MOV 121,C
        LCALL DYAD         ;D0
        MOV 120,C
        ;LCALL DYAD        ;D0
        RET
DYAD:   SETB P1.3           ;__|~  在上升沿后讀取數(shù)據(jù)        
        MOV C,P1.1          ;讀數(shù)據(jù)
        CLR P1.3            ;~|_   下降
        RET
        NOP
        NOP
        RET
ADZH2:  JB P1.1,ADZH2      ;等待轉(zhuǎn)換完成        
        LCALL DYAD         ;D23 調(diào)用讀端口
        LCALL DYAD         ;D22
        LCALL DYAD         ;D21
        LCALL DYAD         ;D20
        LCALL DYAD         ;D19
        LCALL DYAD         ;D18
        MOV 7H,C           ;數(shù)據(jù)送20.7
        LCALL DYAD         ;D17
        MOV 6H,C           ;數(shù)據(jù)送20.6
        LCALL DYAD         ;D16
        MOV 5H,C           ;數(shù)據(jù)送20.5
        LCALL DYAD         ;D15
        MOV 4H,C           ;數(shù)據(jù)送20.4
        LCALL DYAD         ;D14
        MOV 3H,C           ;數(shù)據(jù)送20.3
        LCALL DYAD         ;D13
        MOV 2H,C           ;數(shù)據(jù)送20.2
        LCALL DYAD         ;D12
        MOV 1H,C           ;數(shù)據(jù)送20.1
        LCALL DYAD         ;D11
        MOV 0H,C           ;數(shù)據(jù)送20.0
        LCALL DYAD         ;D10
        MOV 0FH,C          ;數(shù)據(jù)送21.7
        LCALL DYAD         ;D9
        MOV 0EH,C          ;數(shù)據(jù)送21.6
        LCALL DYAD         ;D8
        MOV 0DH,C          ;數(shù)據(jù)送21.5
        LCALL DYAD         ;D7
        MOV 0CH,C          ;數(shù)據(jù)送21.4
        LCALL DYAD         ;D6
        MOV 0BH,C          ;數(shù)據(jù)送21.3
        LCALL DYAD         ;D5
        MOV 0AH,C          ;數(shù)據(jù)送21.2
        LCALL DYAD         ;D4
        MOV 9H,C           ;數(shù)據(jù)送21.1
        LCALL DYAD         ;D3
        MOV 8H,C           ;數(shù)據(jù)送21.0
        LCALL DYAD         ;D2
        LCALL DYAD         ;D1
        LCALL DYAD         ;D0
        ;LCALL DYAD        ;D0
        NOP
        NOP
        NOP
        RET

        NOP
CFDYCX: NOP                 ;除法子程序 R6存高八位 R7存低八位
        MOV R4,#27H         ;除數(shù)10000 2710H
        MOV R5,#10H         ;
        LCALL CF16          ;R7存商  R4(H)R5(L)為余數(shù)
        MOV 31H,R7          ;千位送顯存
        NOP
        MOV A,R4
        MOV R6,A            ;16位余除數(shù)高8位
        MOV A,R5
        MOV R7,A            ;16位余除數(shù)低8位
        MOV R4,#3H          ;除數(shù)1000 3E8H
        MOV R5,#0E8H         ;
        LCALL CF16          ;R7存商  R4(H)R5(L)為余數(shù)
        MOV 32H,R7          ;百位送顯存
        NOP
        MOV A,R4
        MOV R6,A            ;16位余除數(shù)高8位
        MOV A,R5
        MOV R7,A            ;16位余除數(shù)低8位
        MOV R4,#0H          ;除數(shù)100 64H
        MOV R5,#64H         ;
        LCALL CF16          ;R7存商  R4(H)R5(L)為余數(shù)
        MOV 33H,R7          ;十位送顯存
        NOP
        MOV A,R5                                                     
          MOV B,#0AH
          DIV AB
          MOV 34H,A           ;個(gè)位送顯存
          RET
        NOP
        NOP
        NOP                           
        LJMP JC012
CFDLCX: NOP                ;除法電流程序 R6存高八位 R7存低八位
        MOV R4,#27H         ;除數(shù)10000 2710H
        MOV R5,#10H         ;
        LCALL CF16         ;R7存商  R4(H)R5(L)為余數(shù)
        NOP                ;MOV 36H,R7 千位送顯存
        NOP
        MOV A,R4
        MOV R6,A           ;16位余除數(shù)高8位
        MOV A,R5
        MOV R7,A           ;16位余除數(shù)低8位
        MOV R4,#3H          ;除數(shù)1000 3E8H
        MOV R5,#0E8H         ;
        LCALL CF16         ;R7存商  R4(H)R5(L)為余數(shù)
        MOV 36H,R7          ;百位送顯存
        NOP
        MOV A,R4
        MOV R6,A           ;16位余除數(shù)高8位
        MOV A,R5
        MOV R7,A           ;16位余除數(shù)低8位
        MOV R4,#0H          ;除數(shù)100 64H
        MOV R5,#64H         ;
        LCALL CF16         ;R7存商  R4(H)R5(L)為余數(shù)
        MOV 37H,R7          ;十位送顯存
        NOP
        MOV A,R5                                                     
          MOV B,#0AH
          DIV AB
          MOV 38H,A           ;個(gè)位送顯存
        NOP
          RET
        NOP
        NOP
        NOP                        
CF16:   NOP
         CJNE R4,#00H,DIV_H1         
         CJNE R6,#00H,DIV_H2
ALLDIV_L:NOP                        
          MOV A,R7                                       
          MOV B,R5
          DIV AB
          MOV R7,A
          MOV R5,B
          RET        
DIV_H1: NOP        
          CLR      A                                                
          XCH      A,R4        
          MOV      R0,A        
          MOV      B,#08H                  
UIDIV_LOOP1:NOP
          MOV      A,R7                                       
          ADD      A,R7                                       
          MOV      R7,A                                       
          MOV      A,R6                                                        
          RLC      A                                                                        
          MOV      R6,A        
          MOV      A,R4                                                                                
          RLC      A                                                                        
          MOV      R4,A                  
          MOV      A,R6                                                                        
          SUBB     A,R5               
          MOV      A,R4                        
          SUBB     A,R0               
          JC       R4_HIGH                                
R4_EQU_LOW:NOP                        
          MOV      R4,A                        
          MOV      A,R6                                                                                
          SUBB     A,R5                                                                                
          MOV      R6,A                                                                                
          INC      R7                                                   
R4_HIGH: NOP                                                        
          DJNZ     B,UIDIV_LOOP1                        
          CLR      A
          XCH      A,R6                                
          MOV      R5,A                        
          RET      
DIV_H2:        NOP               
          MOV      A,R5
          MOV      R0,A                        
          MOV      B,A        
          MOV      A,R6                                       
          DIV      AB                                
          JB       OV,UIDIV_END        
          MOV      R6,A                                       
          MOV      R5,B                        
          MOV      B,#08H               
UIDIV_LOOP2:NOP                                
          MOV      A,R7
          ADD      A,R7               
          MOV      R7,A                        
          MOV      A,R5
          RLC      A
          MOV      R5,A                        
          JC       UIDIV_NEXT               
          SUBB     A,R0                        
          JNC      RE_EQU_LOW                        
RE_HIGH: NOP                                       
          DJNZ     B,UIDIV_LOOP2                        
          RET     
UIDIV_NEXT:NOP
          CLR      C
          SUBB     A,R0                        
RE_EQU_LOW:NOP  
          MOV      R5,A                        
          INC      R7                        
          DJNZ     B,UIDIV_LOOP2               
UIDIV_END: NOP
           NOP
           RET
             NOP
           NOP
           NOP
FS232:   NOP               ;發(fā)送數(shù)據(jù),22H-41H
         MOV A,#55H
         LCALL FSCXK       ;FE送發(fā)送器
         MOV A,#0AAH
         LCALL FSCXK       ;送字節(jié)發(fā)送器
         MOV R1,#22H       ;發(fā)送數(shù)據(jù)地址指針
         MOV R2,#34        ;發(fā)送數(shù)據(jù)字?jǐn)?shù)
         MOV 41H,#0        ;清零代碼和
FSSS:  MOV A,@R1          ;R1指向數(shù)據(jù)
         LCALL FSCXK       ;第16字節(jié)送發(fā)送器
         INC R1
         DJNZ R2,FSSS      ;
         RET
         NOP
         NOP
         NOP
FSCXK:   MOV SBUF,A        ;字節(jié)送發(fā)送器
         ADD A,41H
         MOV 41H,A
         JNB TI,$          ;等待發(fā)完
         CLR TI
         RET               ;                        
         NOP
         NOP
         NOP
YS10:    NOP               ;延時(shí)/防抖 10mS t=0.0904微秒
         MOV 50H,#48H      ;10毫秒 *
YS11:    MOV 51H,#0FFH     ;255*T 2t 138 微秒
YS12:    NOP               ;1t 11059200
         DJNZ 51H,YS12     ;5t
         DJNZ 50H,YS11     ;
         RET               ;延時(shí)/防抖結(jié)束
         NOP
         NOP
         NOP
YSCX100: NOP               ;100毫秒延時(shí)
         MOV 53H,#10       ;10*10毫秒=100毫秒
YSCX103: MOV 54H,#97       ;100*100微秒=10毫秒
YSCX102: MOV 55H,#162      ;循環(huán)7t*160*0.0904=100微秒(99.982)
YSCX101: NOP
         NOP
         DJNZ 55H,YSCX101  ;100微秒循環(huán)
         DJNZ 54H,YSCX102  ;10毫秒循環(huán)
         DJNZ 53H,YSCX103  ;100毫秒循環(huán)
         RET
         NOP
         NOP
         NOP         
         NOP               ;串口中斷響應(yīng)
CKZD:    RETI              ;如果是接收則響應(yīng) RI=1 ;如果不是接收則返回RI=0
         NOP
         NOP
         NOP
         LJMP JC012
         NOP
         NOP
         NOP
XIANSHI: NOP                ;不使用看門狗 從中斷進(jìn)入顯示程序
         PUSH PSW           ;程序狀態(tài)字入棧
         PUSH ACC           ;累加器入棧
         PUSH B             ;累加器入棧
         MOV 8AH,#0H        ;定時(shí)器0 16位計(jì)數(shù)低8位 重裝
         MOV 8CH,#0F7H      ;16位計(jì)數(shù)高8位 2.5毫秒中斷 顯示用      
         SETB TR0           ;允許計(jì)數(shù)
         MOV A,30H          ;讀取要顯示的位
         MOV DPTR,#ZYDZ     ;設(shè)置轉(zhuǎn)移地址
         MOV B,#3           ;位移
         MUL AB             ;乘法得地址位移量
         JMP @A+DPTR        ;根據(jù)地址位移量轉(zhuǎn)移
         NOP
         NOP
         NOP
ZYDZ:   LJMP D1W           ;轉(zhuǎn)移指向SM8
        LJMP D2W           ;轉(zhuǎn)移指向SM7
        LJMP D3W           ;轉(zhuǎn)移指向SM6
        LJMP D4W           ;轉(zhuǎn)移指向SM5
        LJMP D5W           ;轉(zhuǎn)移指向SM4
        LJMP D6W           ;轉(zhuǎn)移指向SM3
        LJMP D7W           ;轉(zhuǎn)移指向SM2
        LJMP D8W           ;轉(zhuǎn)移指向SM1
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        MOV 30H,#0         ;顯示的位計(jì)數(shù)器
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP
        NOP
D1W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第一位 最左一位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,31H         ;SM8
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.7          ;顯示第一位
        INC 30H           ;準(zhǔn)備SM7  
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP
        NOP
D2W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第二位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,32H          ;SM7
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.6          ;顯示第二位
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP
        NOP
        NOP
D3W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第三位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,33H         ;SM6
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.5          ;顯示第三位
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP   
        NOP
        NOP
D4W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第四位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,34H         ;SM5
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.4          ;顯示第四位
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP   
        NOP
        NOP
D5W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第五位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,35H         ;SM4 這里不用譯碼 直接送
        MOV P0,A          ;顯示劃驅(qū)動(dòng)      
        CLR P2.3          ;顯示第五位
        LCALL YMQ         ;調(diào)用譯碼器 占用時(shí)間
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP
        NOP
        NOP
D6W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第六位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,36H         ;SM3
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.2          ;顯示第六位
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP   
        NOP
        NOP
D7W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第七位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,37H         ;SM2
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.1          ;顯示第七位
        INC 30H           ;準(zhǔn)備下一位
        LJMP XIANSHIW     ;轉(zhuǎn)移到返回
        NOP
        NOP
D8W:    MOV P0,#0FFH      ;關(guān)閉顯示劃驅(qū)動(dòng),準(zhǔn)備顯示第八位
        MOV P2,#0FFH      ;關(guān)閉顯示位驅(qū)動(dòng)
        MOV A,38H         ;SM1
        LCALL YMQ         ;調(diào)用譯碼器      
        MOV P0,A          ;顯示劃驅(qū)動(dòng)
        CLR P2.0          ;顯示第八位
        MOV 30H,#0        ;準(zhǔn)備下一循環(huán)位
XIANSHIW:  POP B            ;累加器出棧
           POP ACC          ;累加器出棧
             POP PSW          ;程序狀態(tài)字出棧
           RETI              ;從定時(shí)器0中斷返回
           NOP
           NOP
YMQ:       MOV DPTR,#YMSJ    ;設(shè)置譯碼數(shù)據(jù)地址指針
           MOVC A,@A+DPTR    ;讀取譯碼數(shù)據(jù)
           RET
           RET
           NOP
YMSJ:      DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0F7H,0FEH,0BFH,0H,0H
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LJMP XIANSHIW
           NOP
           NOP
WDCS:      NOP               ;溫度測試
           RET               ;返回
           NOP
           NOP
           END
回復(fù)

使用道具 舉報(bào)

7#
ID:117716 發(fā)表于 2020-5-6 09:28 | 只看該作者
老當(dāng)益壯,這是樓主70周歲制作的生日紀(jì)念品,讓我們祝福他!
回復(fù)

使用道具 舉報(bào)

8#
ID:514317 發(fā)表于 2020-5-6 10:07 | 只看該作者
列兵 發(fā)表于 2020-5-6 09:28
老當(dāng)益壯,這是樓主70周歲制作的生日紀(jì)念品,讓我們祝福他!

怪不得用匯編     關(guān)鍵我看不懂啊    只能膜拜
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级视频免费 | 欧美一级免费看 | 99这里只有精品 | 91免费看片| 日韩av成人| 国产精品一区在线观看你懂的 | 亚洲国产精品一区二区第一页 | 中文字幕 在线观看 | 中文字幕国产精品视频 | 国产一区二区三区 | 久久久久久久一区 | 日韩精品视频在线观看一区二区三区 | 日韩国产在线 | 成人免费av在线 | 九九免费视频 | 亚洲成人毛片 | 亚洲欧美日韩国产 | 亚洲欧美一区二区在线观看 | 亚洲高清视频一区 | 日韩中文字幕2019 | 精品欧美一区二区精品久久久 | 美女爽到呻吟久久久久 | 激情欧美一区二区三区中文字幕 | 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区视频 | 国产一区精品 | 亚洲精品视频一区二区三区 | 国产一级一级国产 | 国产丝袜一区二区三区免费视频 | 日韩久久久久久 | 狠狠av| 日韩一区二区三区精品 | 国产精彩视频一区 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 日韩三片 | 国产精品欧美一区喷水 | 日韩视频精品在线 | 国产成人在线免费 | 伊人久久国产 | 全免费a级毛片免费看视频免费下 | 欧美精品一区二区三区在线四季 |