|
;designed by wangxiaoqing
;2005 11.25
LIST P=16f72
INCLUDE "P16f72.inc"
ORG 0000H
GOTO E00A
ADDLW 0xff
addlw 0xff
addlw 0xff
;主程序開始跳到BANK0------BANK1
ORG 0004H
GOTO F168
MOVLW 0; 初始化
MOVWF 0X40;延時256*240US
A007 CALL DL
DECFSZ 0X40,F
GOTO A007
ORG 000AH
E00A MOVLW 0X1 ; 初始化
MOVWF 0X40;延時40*240US
A00C CALL DL
DECFSZ 0X40,F
GOTO A00C;
A00F CALL B17E;清20H--7FH=0
CALL B188;復初始積存器值
CALL B1A4
CALL B1D4
CALL B1D9
CALL A058
MOVF 0X71,W
MOVWF PORTC;根據霍爾信號對應PC口狀態控制IR2103
BSF T1CON,0;TR1=1定時器開始工作
BSF T2CON,0X2;TR2=1定時器開始工作
BSF STATUS,0X5;選擇BANK1
BCF TMR0,0X5;OPTION.5=0;;T0CS=0用內部周期時鐘
BCF STATUS,0X5; BANK0
MOVLW 0XA0
MOVWF TMR0;TMR0=#160
BSF INTCON,0X5;允許TMR0中斷
BCF INTCON,0X2;T0IF=0
BCF INTCON,0;RBIF=0
BSF INTCON,0X7;GIE=1;開所有的中斷
CALL H353
A023 CLRWDT;WDT=0防止看門狗益出
BTFSS 0X20,0
GOTO A031
CLRF CCPR1L ;CCPR1=0 KJJJJJJJJJJJLKKKKKKKKKKKKKKKKKKK
MOVLW 0Xf
ANDWF CCP1CON,F
CALL A036
MOVLW 0X81
BTFSC PORTB,0X4;PB4=0?
MOVLW 0XAB;
SUBWF 0X65,W ;65H-#ABH
BTFSC STATUS,0 ; 過壓否 欠壓否
GOTO E00A;65H>=#ABH;程序復位
GOTO A023 ;65H<#ABH;跳到0023H
A031 CALL A0A9
CALL D4D9
CALL B1D9
CALL C356
GOTO A023
A036 MOVLW 0X89
MOVWF ADCON0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF ADCON0,2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
A051 BTFSC ADCON0,0X2;
GOTO A051
MOVLW 0X4;
ADDWF ADRES,F ;4+ADRES送到ADRES
MOVF ADRES,W
MOVWF 0X65; ADRES送到65H
RETURN;返回地址0029H
;確定當前轉子位置確定當前轉子位置
A058 MOVF PORTB,W ;PB0---PB7送到70H
MOVWF 0X70
SWAPF 0X70,F
BCF STATUS,0
RRF 0X70,F
MOVLW 0X7
ANDWF 0X70,W ;PB5,PB6,PB7接霍爾信號送到W
MOVWF 0X70
CALL A063
MOVWF 0X71;W送到71H返回IR2103輸出控制表送到71H
RETURN
A063 BTFSS PORTB,0X3;檢測PB3=1?
GOTO A087;PB3=0;跳到87H
MOVWF 0X7D;檢測到PB3=1;霍爾信號送到7DH
MOVLW 0
SUBWF 0X7D,W ;
BTFSC STATUS,0X2 ;7DH不=0跳6AH
RETLW 0;7DH=0;; W=#0
MOVLW 0X1
SUBWF 0X7D,W
BTFSC STATUS,0X2 ;7DH不=1
RETLW 0X51 ;7DH=1;; W=#51H
MOVLW 0X2
SUBWF 0X7D,W
BTFSC STATUS,0X2;7DH=2?
RETLW 0X98 ;7DH=2;; W=#98H
MOVLW 0X3
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0X58;7DH=#3;; W=#58H
MOVLW 0X4
SUBWF 0X7D,W
BTFSC STATUS,0X2;
RETLW 0XC2;7DH=#4;; W=#C2H
MOVLW 0X5
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0XC1;7DH=#5;; W=#C1H
MOVLW 0X6
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0X92;7DH=#6;; W=#92H
MOVLW 0X7
SUBWF 0X7D,W
BTFSC STATUS,0X2;
RETLW 0;7DH=#7;; W=#0
RETLW 0;7DH不=#7;; W=#0
A087 MOVWF 0X7D
MOVLW 0
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0Xc1;7DH=#0;; W=#D1H
MOVLW 0X1
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0X51;7DH=#1;; W=#51H
MOVLW 0X7
SUBWF 0X7D,W
BTFSC STATUS,0X2;;
RETLW 0X98;7DH=#7;; W=#98H
MOVLW 0X3
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0X58;7DH=#3;; W=#58H
MOVLW 0X4
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0Xc2;7DH=#4;; W=#D2H
MOVLW 0X5
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0;7DH=#5;; W=#0
MOVLW 0X6
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0X92;7DH=#6;; W=#92H
MOVLW 0X2
SUBWF 0X7D,W
BTFSC STATUS,0X2
RETLW 0 ;;7DH=#2;;; W=#0
RETLW 0 ;;7DH不=#2;; W=#0
A0A9 BTFSC 0X20,0
GOTO A0AF
CALL B24C
CALL B252
BTFSS 0X20,0X4
GOTO A0B4
A0AF MOVLW 0XFC
MOVWF 0X2C
MOVWF 0X2D
BCF 0X43,0
GOTO E143
A0B4 BTFSS 0X44,0X5
GOTO A0B7
GOTO A00F
A0B7 BTFSS 0X20,0X5
GOTO A0D0
MOVF 0X2D,W
SUBLW 0XFC
BTFSC STATUS,0X2
GOTO A0C8
MOVLW 0X1
ADDWF 0X2D,F
BTFSC STATUS,0
GOTO A0C8
MOVF 0X2D,W
SUBLW 0XFC
BTFSS STATUS,0
GOTO A0C8
MOVF 0X2D,W
MOVWF 0X2C
GOTO E146
A0C8 MOVLW 0XFC
MOVWF 0X2C
MOVWF 0X2D
GOTO E146
INCF 0X2D,F
MOVF 0X2D,W
MOVWF 0X2C
GOTO E146
A0D0 BTFSS 0X43,0
GOTO A0D5
MOVF 0X38,W
MOVWF 0X2C
GOTO F12E
A0D5 MOVLW 0X99
MOVWF ADCON0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF ADCON0,0X2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BTFSC ADCON0,0X2
GOTO 0XF2
MOVF ADRES,W
MOVWF 0X2C
MOVLW 0X5D
BCF STATUS,0
SUBWF 0X2C,W
BTFSC STATUS,0
GOTO A0FE
MOVLW 0X54
MOVWF 0X2C
GOTO F11E
A0FE MOVLW 0XB0
BCF STATUS,0
SUBWF 0X2C,W
BTFSS STATUS,0
GOTO E106
MOVLW 0
MOVWF 0X2C
GOTO F11E
E106 MOVLW 0X5D
SUBWF 0X2C,W
SUBLW 0X54
MOVWF 0X2C
GOTO F11E
MOVLW 0X7C
BCF STATUS,0
SUBWF 0X2C,W
BTFSS STATUS,0
GOTO F113;
MOVLW 0X3F
MOVWF 0X2C
GOTO F11E
F113 MOVLW 0X4C
BCF STATUS,0
SUBWF 0X2C,W
BTFSC STATUS,0
GOTO F11B
MOVLW 0
MOVWF 0X2C
GOTO F11E
F11B MOVLW 0X3C
SUBWF 0X2C,w
MOVWF 0X2C
F11E MOVF 0X2C,W
ADDWF 0X2C,F
ADDWF 0X2C,F
MOVLW 0XFC
SUBWF 0X2C,W
BTFSC STATUS,0X2;55H=#FAH?
GOTO F12E
BCF STATUS,0
MOVLW 0xfc
MOVWF 0x37
RRF 0X37,W
SUBWF 0X36,W
BTFSC STATUS,0
GOTO F12E
MOVF 0X41,W
SUBWF 0X2C,W
BTFSC STATUS,0
GOTO F12E
BTFSS 0X43,0X6
GOTO F12E
MOVF 0X41,W
MOVWF 0X2C
F12E MOVF 0X2C,W
SUBWF 0X2D,W
MOVWF 0X2B
MOVF 0X2B,F
BTFSC STATUS,0X2
GOTO E143
BCF STATUS,0;進位 C=0
MOVF 0X2D,W
SUBWF 0X2C,W; 2CH-2DH
BTFSC STATUS,0;進位C=0?
GOTO F13B;2C>=2DH
DECF 0X2D,F;2CH<2DH
GOTO E143 ;DAO143
F13B INCF 0X2D,F ;2C>=2DH;;;2DH+1=2DH
BCF STATUS,0;進位C=0
MOVLW 0XFC
SUBWF 0X2D,W; 2DH-#FCH
BTFSS STATUS,0 ;進位C=1
GOTO E143;進位C=0 ;;2DH<#FCH跳到143
MOVLW 0XFC;進位C=1
MOVWF 0X2D;2DH>=#FCH;;2DH=#FCH
E143 GOTO F144
F144 MOVLW 0XFC
MOVF 0X2D,W;2DH=#FCH
E146 SUBLW 0XFC;#FCH-2DH送到W
MOVWF 0X48;W送到48H
BCF STATUS,0;進位C=0
RRF 0X48,F ;48H/2送到48H
BCF STATUS,0
RRF 0X48,W ;48H/2送到W
MOVWF 0X48 ;48H/2送到48H
ADDWF 0X48,F;;W+48H送到48H
ADDWF 0X48,F;48H+W送到48H
BCF STATUS,0;C=0
RRF 0X48,W ;48H/2送到W
MOVWF 0X48 ;48H/2送到48H
BTFSC PORTC,0X5;PA0,PA1(D5,D6)位程序存儲器巖面地址預選擇位PA0=0
GOTO F15B;PA0=0跳到15B;;測試PA1=0?
SUBLW 0X3A;;PA0=1;; #3AH-W
BTFSS STATUS,C;C=1?
GOTO F158 ;W>#3AH 跳到158
GOTO F15A; W<=#3AH跳到15A
F158 MOVLW 0X3A; #3AH=W
GOTO F15B
F15A MOVF 0X48,W ;48H=W
F15B BTFSC 0X44,0X6 ;測試PA1=0?測試PA1 PA0 =00選中0 巖面(000---1FFH)01(200---2FFH)10(300---3FF)11(400---4FFH)
;PA1PA0=10或者=11時跳到164
MOVLW 0 ;W=#0 ;;PA1PA0=00,或者=01
BTFSC PORTB,0X2 ;檢測PB2=0?SC剎車控制
GOTO F164;PB2=1跳到164
MOVLW 0XFC;PB2=0;2CH=#FCH
MOVWF 0X2C
MOVWF 0X2D;2DH=#FCH
BCF 0X43,0;43H.0=0
MOVLW 0;0=W
F164 MOVWF CCPR1L ;W=CCPR1KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
MOVLW 0XF
ANDWF CCP1CON,F;CCP1CON 與00001111=CCP1CON
RETURN
;;0004中斷程序
F168 BCF INTCON,0X7;GIE=0
MOVWF 0X21
MOVF STATUS,W
MOVWF 0X22;保護現場
BTFSS INTCON,0;;檢測是不是PB4--PB7口、變化中斷
GOTO F170;不是
CALL G27E;是調用27E
GOTO F179;返回現場
F170 BTFSS INTCON,0X2;是不是TMR0益處中斷
GOTO F174
CALL H34C;是
GOTO F179
F174 CALL G2BA;調用2BA;
BTFSS PIR1,0;TMR1IF=1?是定時器1中斷?
GOTO F179;不是返回出棧
BSF 0X67,0;是TMR1中斷67H.0=1
BCF PIR1,0;TMR1IF=0以防誤中斷
F179 MOVF 0X22,W;出棧返回現場
MOVWF STATUS
MOVF 0X21,W
BSF INTCON,0X7;GIE=1;開中斷
RETFIE;中斷返回
B17E MOVLW 0X20;清所有的單元
MOVWF FSR
MOVLW 0X5F
MOVWF 0X7F
F182 CLRF INDF
DECFSZ 0X7F,F
GOTO F186
RETURN
F186 INCF FSR,F
GOTO F182
B188 MOVLW 0X0
MOVWF CCPR1L
MOVWF 0X42
MOVWF 0X34;清34H
MOVWF 0X33;清33H
MOVLW 0XFC
MOVWF 0X41;41H=#FCH
MOVWF 0X2D;42H=#2DH
MOVLW 0X3F
MOVWF 0X60;60H=#3FH
MOVWF 0X61;61H=#3FH
MOVWF 0X62;62H=#3FH
MOVWF 0X63;63H=#3FH
MOVLW 0
MOVWF 0X43;43H=#0
MOVWF 0X44;44H=#0
MOVWF 0X45;45H=#0
MOVLW 0X24
MOVWF 0X4A;4AH=#24H
MOVWF 0X4B;4BH=#24H
MOVWF 0X4C;4CH=#24H
MOVWF 0X4D;4DH=#24H
MOVWF 0X47;47H=#24H
MOVLW 0X4
MOVWF 0X49;49H=#04H
MOVLW 0X40
MOVWF 0X75;75H=#40H
RETURN;;返回
B1A4 BCF STATUS,0X5;
MOVLW 0X4
MOVWF ADCON0;
MOVLW 0X48
MOVWF INTCON;允許外圍接口中斷PEIE=1;RBIE=1
BSF STATUS,0X5
MOVLW 0X1
MOVWF PIR1;TMR1IE=1允許TMR1中斷
BCF STATUS,0X5;BANK0
MOVLW 0
MOVWF PORTA;PA=0000 0000
MOVLW 0X18
MOVWF PORTB;PB=0001 1000
MOVLW 0XC2
MOVWF PORTC;PC=1100 0010
BSF STATUS,0X5;BANK1
MOVLW 0X3F
MOVWF PORTA;TRISA=0011 1111,PA0--PA5定義輸入
MOVLW 0XFE
MOVWF PORTB;TRISB=1111 1110;PB0輸出PB1--PB7定義輸入
MOVLW 0X20
MOVWF PORTC;TRISC=0010 0000;PC5定義輸入,PC0--PC4,PC6,PC7輸出
MOVLW 0X4
MOVWF ADCON0;PA0,PA1,PA3位模擬口,PA2,PA5為數字口
BCF STATUS,0X5
BSF STATUS,0X5;BANK1
MOVLW 0X1
MOVWF PIR1;;TMR1IE=1允許TMR1中斷
BCF STATUS,0X5;BANK0;
MOVLW 0X38
MOVWF TMR0;TMR0=#38H
MOVLW 0
MOVWF T1CON;TMR1關閉,工作在定時方式分頻1
MOVLW 0X10
MOVWF TMR1L
MOVLW 0XF3
MOVWF TMR1H;TMR1H=#F3H;TMR1L=#10H
MOVLW 0
MOVWF T2CON;;TMR2=0
MOVLW 0XC
MOVWF CCP1CON;PWM方式CCP1
MOVLW 0
MOVWF CCPR1L;TMR1IF=0;TMR2IF=0,ADIF=0
BSF STATUS,0X5;BANK1;
MOVLW 0X5D
MOVWF T2CON;PR2=#5DH
BCF STATUS,0X5;返回BANK0
RETURN
B1D4 CLRF PIR1;清外圍接口中斷標志寄存器TMR1IF(0),TMR2IF(1),CCP1IF(2)
CLRF STATUS;清狀態寄存器BANK0
BCF INTCON,0; ;清GIE中斷允許位,禁止所有中斷
BCF PIR1,0;TMR1IF=0
RETURN
B1D9 MOVF 0X4B,W
MOVWF 0X4C;4BH送到4CH
MOVF 0X4A,W
MOVWF 0X4B;4AH送到4BH
MOVF 0X47,W;
MOVWF 0X4A;47H送到4AH
MOVLW 0X89
MOVWF ADCON0;準備A/D轉換,關閉
NOP
NOP
NOP
NOP
NOP
NOP;延時一段時間穩定A/D
NOP
NOP
NOP
NOP
NOP
NOP
BSF ADCON0,0X2;開始A/D轉換
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
F1FA BTFSC ADCON0,0X2
GOTO F1FA
MOVLW 0X4;轉換完成
MOVLW 0X4
ADDWF ADRES,F;#4+ADRES送到ADRES
MOVF ADRES,W ;ADRES送到W
MOVWF 0X4A ;ADRES送到4AH
BCF STATUS,0
RRF ADRES,F
BCF STATUS,0
RRF ADRES,F;ADRES/4送到ADRES
MOVWF 0X47;W送到47H
BCF STATUS,0
RRF 0X47,F
BCF STATUS,0
RRF 0X47,F ;47H/4送到47H
MOVF ADRES,W
MOVWF 0X47 ;ADRES送到47H
BTFSC PORTB,0X4;檢測 PB4=0? 檢測過壓欠壓埋標志位
GOTO G219
MOVLW 0X84;PB4=0 則 4AH-#84H
SUBWF 0X4A,W
BTFSC STATUS,0
GOTO G224
BSF 0X20,0X2 ;4AH<#84H;;20H.2=1
MOVLW 0X7F
SUBWF 0X4A,W ;4AH-#7FH
BTFSC STATUS,0
GOTO G225 ;4AH>=#7FH 跳到225
BSF 0X20,0X3 ;4AH<#7FH;;20H.3=1
GOTO G226; 4AH>=#2FH跳到 226
G219 MOVLW 0XAC
SUBWF 0X4A,W ;4AH-#ACH
BTFSC STATUS,0
GOTO G224 ;4AH>=#ACH跳到224
BSF 0X20,0X2 ;4AH<#ACH;;20H.2=1
MOVLW 0XA9
SUBWF 0X4A,W;4AH-#A9H
BTFSC STATUS,0
GOTO G225 ;4AH>=#A9H跳到225
BSF 0X20,0X3;4AH<#A9H;;20H.3=1
GOTO G226 ; 跳到226
G224 BCF 0X20,0X2;20H.2=0
G225 BCF 0X20,0X3; 20H.3=0
G226 MOVF 0X47,W; 47H送到5FH A/D 值
MOVWF 0X5F
CLRF 0X5E; 5EH=#0
G229 MOVLW 0XA;HJYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
BCF STATUS,0;C=0
SUBWF 0X5F,W ;5FH-#2送到W
BTFSS STATUS,0; 5FH>=#2
GOTO G231
;5FH<#2跳到231
MOVWF 0X5F;5FH-#2送到5FH
INCF 0X5E,F;5EH+1回送到5EH
GOTO G229;跳到228重新檢測
G231 MOVF 0X5F,F
BTFSS STATUS,0X2 ;5FH=0?
GOTO G236;5FH不=0 跳到236
MOVLW 0XA;5FH=#10
MOVWF 0X5F
G236 MOVF 0X5E,F
BTFSS STATUS,0X2;5EH=0?
GOTO G23B;5EH不=0跳到23B
MOVLW 0XA;5EH=0則5EH=#10
MOVWF 0X5E
G23B MOVF 0X5E,W
MOVWF 0X3D ;5EH送到3DH
MOVF 0X5F,W
MOVWF 0X3E ;5FH送到3EH返回
RETURN ;返回
DL CLRF 0X6F ;延時240US子程序
A241 NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ 0X6F,F
GOTO A241
RETURN
B24C BTFSS PORTA,0X4;檢測PA4=1?
GOTO A250
BCF 0X20,0X4;PA4=1;20H.4=0;返回
RETURN
A250 BSF 0X20,0X4;檢測到 PA4=0;;20H.4=0;
RETURN
B252 MOVF 0X52,W
MOVWF 0X53;52H送到53H
MOVF 0X51,W
MOVWF 0X52;51H送到52H
MOVF 0X50,W
MOVWF 0X51;50H送到51H
MOVLW 0X81
MOVWF ADCON0;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF ADCON0,0X2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
A272 BTFSC ADCON0,0X2
GOTO A272
MOVF ADRES,W
MOVWF 0X50;ADRES送到50H;(AD結果送到ADRES)
MOVF 0X75,W
SUBWF 0X50,W
BTFSS STATUS,0
GOTO A27C
BSF 0X20,0X5
RETURN
A27C BCF 0X20,0X5
RETURN
G27E BCF 0X26,1
BCF INTCON,0X3
BCF INTCON,0;是PB4--PB7變化中斷;RBIF=0
CALL A058;
MOVF 0X71,W;根據霍爾信號控制IR2103,HC08
BTFSS STATUS,0X2;檢測71H=0?
GOTO G287;不=0;跳到287
BSF 0X26,0X1;71H=0;;26H.1=1
GOTO G2B8;跳到2B8
G287 SUBWF 0X72,W ;;72H=71H(根據霍爾信號控制IR2103,HC08)?
BTFSC STATUS,0X2;
GOTO G2B8;72H=71H跳到2B8
MOVLW 0XFC
SUBWF 0X2D,W
BTFSS STATUS,0X2;2DH=#fCH?
GOTO G292;不=#2CH跳到291HHHHHHHHHHHHHHHHHHHHHHHHH
MOVLW 0XF0;2DH=#fCH;PC=1111 0000
MOVWF PORTC
BSF 0X44,0X7;44H.7=1
GOTO G294;跳到298
G292 MOVF 0X71,W;
MOVWF PORTC; PC口=71H
G294 BTFSS PORTB,3
GOTO G298;
CALL I408
GOTO G299;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
G298 CALL I468
G299 MOVF 0X70,W;70H送到69H
MOVWF 0X69
MOVF 0X71,W
MOVWF 0X72;71H送到72H
BTFSS 0X26,0X1;26H.1=1?
INCF 0X66,F;不=1,66H+1送到66H
MOVF 0X66,W
SUBLW 0X80
BTFSC STATUS,2
DECF 0X66,F;66H-1送到66H
INCF 0X54,F;54H+1送到54H
MOVLW 0XA
SUBWF 0X54,W
BTFSS STATUS,2
GOTO G2B0
CLRF 0X54
INCF 0X55,F;55H+1送到55H
MOVLW 0XFA
SUBWF 0X55,W
bTFSS STATUS,0X2;55H=#FAH?
GOTO G2B0;不=;;跳到2B0
CLRF 0X55;=#FAH;;55H=#0
BSF 0X4F,0
G2B0 INCF 0X56,F
CALL H353
MOVF 0X74,W
SUBWF 0X56,W
BTFSS STATUS,0X2;
GOTO G2B8
CLRF 0X56;56H=0
INCF 0X57,F
;57H+1送到57H;
G2B8 BSF INTCON,0X3;允許RBIE=1中斷返回
RETURN
G2BA MOVLW 0X10
MOVWF TMR1L;TMR1L=#10H
MOVLW 0XF3
MOVWF TMR1H;TMR1H=#F3H
CALL H378
CALL H390
CALL H316
CALL H322
BTFSS 0X20,0X4;檢測22H.4=1?
CLRF 0X6A;檢測到20H.4=0;;6AH=#0
INCF 0x6a,F;檢測到20H.4=1;;6AH+1送到6AH
MOVF 0X6A,W
BCF 0X44,0X5;44H.5=0
SUBLW 0X64
BTFSC STATUS,0X2;檢測6AH=#64H?
BSF 0X44,0X5;6AH=#64H;;44H.5=1
BTFSS 0X44,0X5;檢測到6AH不=#64H;;在檢測44H.5=1?
GOTO G2DF;檢測到44H.5=0;;跳到3DF
MOVLW 0;檢測到44H.5=1;;
MOVWF PORTC;PC口=0000 0000
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL
CALL DL;延時240US*10=2.4MS
MOVLW 0X7
MOVWF PORTC;PC=0000 0111
G2DA CALL B24C
CLRWDT
BTFSC 0X20,0X4
GOTO G2DA
RETURN
G2DF CALL H336
CALL H32E
BTFSS 0X20,0X1
GOTO G2FF
CALL H340
CALL H3DA
INCF 0X76,F
MOVF 0X76,W
SUBLW 0XA
BTFSS STATUS,0X2
GOTO G2FF
CLRF 0X76
BTFSS 0X44,0X6
GOTO G2F4
INCF 0X73,F
MOVF 0X73,W
SUBLW 0X5
BTFSS STATUS,0X2
GOTO G2FF
BSF 0X20,0
GOTO G2FF
G2F4 MOVF 0X66,W
SUBLW 0XE
BTFSS STATUS,0
GOTO G2FB
CALL H302
CLRF 0x66
GOTO G2FF
G2FB CLRF 0x66
CLRF 0x73
MOVLW 0x40
MOVWF 0x75
G2FF BCF 0x20,1
BCF PIR1,0
RETURN
H302 BTFSC 0x44,0x6
RETURN
MOVLW 0x5
SUBWF 0x50,w
BTFSS STATUS,0
GOTO H312
INCF 0x73,F
MOVF 0x73,w
SUBLW 0x4
BTFSS STATUS,0x2
RETURN
MOVLW 0x10
MOVWF 0x75
BSF 0x44,0x6
CLRF 0x73
RETURN
H312 CLRF 0x73
MOVLW 0x40
MOVWF 0x75
RETURN
H316 BTFSC 0x20,0x3;檢測20H.3=0?
GOTO H31A;20H.3=1跳到31A
CLRF 0x5a;20H.3=0;;5AH=#0
RETURN
H31A INCF 0x5a,F;5AH+1送到5AH
MOVLW 0xfa
SUBWF 0x5a,w
BTFSS STATUS,0X2;判斷5AH=#FAH?
RETURN;5AH不=#FAH
BSF 0x20,0;5AH=#FAH;;20H.0=1
CLRF 0x5a;5AH=#0
RETURN
H322 BTFSC 0x20,0x5;檢測20H.5=0?
GOTO H326;20H.5=1;;跳到326
CLRF 0x5b;20H.5=0;;5BH=#0
RETURN
H326 INCF 0x5b,F;5BH+1送到5BH
MOVLW 0xc8
SUBWF 0x5b,w
BTFSS STATUS,0x2 ;5BH=#C8H?
RETURN;5BH不=#C8H
BSF 0x20,0;5BH=#C8H;;20H.0=1
CLRF 0x5b;5BH=#0
RETURN
H32E INCF 0x5c,F;5CH+1送到5CH
MOVLW 0x14
SUBWF 0x5c,w;
BTFSS STATUS,0x2;5CH=#14H?
RETURN;≠返回
BSF 0x20,0x1;5CH=#14H;;20H.1=1
CLRF 0x5c;5CH=#0
RETURN
H336 INCF 0x59,F;59H+1送到59H
MOVLW 0x64
SUBWF 0x59,W
BTFSS STATUS,0X2
RETURN;≠則返回
MOVF 0x57,W
MOVWF 0x46 ;57H送到46H
CLRF 0x57;57H=#0;;59H=#0
CLRF 0x59
RETURN
H340 BTFSC 0x20,0x2;檢測20H.2=0?
GOTO H343
RETURN;20H.2=0返回
H343 BTFSC 0x20,0x3;20H.2=1;;檢測20H.3=0?
GOTO H34B;20H.3=1;;返回
BTFSS 0x5d,0;;20H.3=0;檢測
GOTO H349
BCF 0x5d,0
RETURN
H349 BSF 0x5d,0
RETURN
H34B RETURN
H34C CALL I4C9
MOVLW 0xa0
MOVWF TMR0;TMR0=#160
BCF INTCON,0x2;PEIE=0
RETURN
BCF 0x20,0x6
RETURN
H353 MOVLW 0x6
MOVWF 0x74
RETURN
C356 CALL H366;調用366
BTFSS 0x43,0x2;檢測43H.2=1?
RETURN;43H.2=0;返回
BTFSC 0x43,0;43H.2=1;檢測43H.0=1?
GOTO H35C;檢測43H.0=0跳到35C;
GOTO H364;43.0=1;跳到364
H35C BCF 0x43,0;43H.0=0
MOVF 0x2D,W
SUBLW 0xf0
BTFSC STATUS,0
BCF 0x43,0
MOVF 0x2d,w
MOVWF 0x38
RETURN
H364
RETURN
H366 BCF 0x43,0x2
BTFSC PORTB,0x1
GOTO H36D
BSF 0x43,0x2
H36D
RETURN
H36F BCF 0x43,0x4;43H.4=0
BTFSC PORTA,0x2;檢測PA2=0?
GOTO H376;PA2=1;跳到376
RETURN
H376 BSF 0x43,0X4;
RETURN;返回
H378 CALL H36F;調用36F
BTFSC 0x43,0x4;檢測43h.4=1?
GOTO H381;43H.4=0;;跳到38
CLRF 0x35;3BH=#0
RETURN
H381 MOVF 0x35,W
SUBLW 0xfc
BTFSC STATUS, 0x2
RETURN;35H=#FCH;返回
INCF 0x35,F;35H不=#FCH;;35H+1送到35H返回
RETURN
H38E BCF 0x44,0x1;44h.1=0
RETURN
H390
BTFSC 0x43,0x3;檢測到43H.1=1;;檢測43H.3=0?
GOTO H397;43H.3=1;跳到397
BSF 0x43,0x3;43H.3=0則43H.3=1
RETURN;返回
H397 MOVF 0x35,W;
MOVWF 0X36; 35H送到36H
INCF 0x42,F
MOVLW 0xfc
MOVWF 0x37 ;42H送到37H
BCF 0X43,0x7;43H.7=0
BCF STATUS,0;C=0
RRF 0x37,W;37H/2送到W
SUBWF 0x36,W;36H-37H/2
BTFSS STATUS,0;
BSF 0x43,0x7;36H<(37H/2);;43H.7=1
BTFSC 0x43,0x7;36H>=(37H/2);43H.7=0?
CALL H3CF ;43H.7=1跳到3CF
BTFSS 0x43,7;43H.7=0;檢測
GOTO H3BB;跳到3BBH
BTFSS 0x43,6
GOTO H3BB;跳到3BBH
MOVF 0x42,W
SUBLW 0xa5 ; #A5H-42H
BTFSS STATUS,0
GOTO H3BB;42H>#A5H跳到3BB
MOVLW 0x4e;42H<=#A5H
MOVWF 0x64;42H=#4EH
MOVF 0x42,W
SUBWF 0x64,F;#64H-42H
BTFSC STATUS,0
GOTO H3C0;42H<=#64H;跳到3C0H
MOVF 0x42,W;42H>#64H
MOVLW 0x27
SUBWF 0x42,W;42H-#27H送到W再送到41H
MOVWF 0x41
BCF STATUS,0;C=0
ADDWF 0x41,W; 41H+W送到41H
MOVWF 0x41
CALL H3ED;調用3EDH
RETURN
H3BB MOVLW 0xfc
MOVWF 0x41 ;41H=#FCH
CALL H3ED;調用3EDH
RETURN
H3C0 MOVLW 0x4e
MOVWF 0x41;41H=#4EH
CALL H3ED;調用3EDH
RETURN
H3CB MOVLW 0xFc
MOVWF 0x41;41H=#1CH
CALL H3ED ;調用3ED
RETURN
H3CF BTFSS 0x43,0x6;43H.6=1?
GOTO H3D2;43H.6≠1跳到3D2
RETURN;43H.6=1返回
H3D2 INCF 0x34,f;34H+1送到34H
MOVF 0x34,w
XORLW 0x5
BTFSS STATUS,0x2;34H=5?
RETURN;34H≠5返回
BSF 0x43,0x6;34H=5;;43H.6=1;;34H=#0;返回
CLRF 0x34
RETURN
H3DA BTFSS 0x43,0x6;43H.6=1?
RETURN;43H.6≠1返回
MOVLW 0xfc
SUBWF 0x41,w
BTFSS STATUS,0x2;43H.6=1;判斷41H=#FCH?
GOTO H3E1;41H≠#FCH跳到3E1
GOTO H3E5;41H=#FCH跳到3E5
H3E1 BTFSS 0x43,0x7;43H.7=1?
GOTO H3E5;43H.7≠1跳到3E5
CLRF 0x33;43H.7=1;;33H=#0返回
RETURN
H3E5 INCF 0x33,F
MOVF 0x33,W;33H+1送到33H
XORLW 0x8
BTFSS STATUS,0x2;33H=6?
RETURN;33H≠6返回
BCF 0x43,0x6;33H=6,43H.6=0
CLRF 0x33;33H=#0
RETURN
H3ED BCF STATUS,0
RRF 0x41,F;41H/2送到41H
BCF STATUS,0
RRF 0x41,w;41H/2送到W
MOVWF 0x63 ;W送到63H
ADDWF 0x60,W;60H+W送到W
ADDWF 0x61,W;61H+W送到W
ADDWF 0x62,W;62H+W送到W
MOVWF 0x41;W送到41H
MOVWF 0x63;W送到63H
BCF STATUS,0
RRF 0x63,F
BCF STATUS,0
RRF 0x63,F;63H/4送到63H
MOVF 0x61,W
MOVWF 0x60;61H送到60H
MOVF 0x62,W
MOVWF 0x61;62H送到61H
MOVF 0x63,W
MOVWF 0x62;63H送到62H
MOVF 0x41,W
SUBLW 0xf0 ;#F0H-41H
BTFSC STATUS,0
RETURN;41H<=#F0H返回
MOVLW 0xfc;41H>#F0H
MOVWF 0x41;41H=#FCH;;返回
RETURN
I408 DECF 0x70,W;70h-1送到70H
BTFSS STATUS,0x2;70H=0?
GOTO I40C;70H不=0跳到40C
GOTO I40D;70H=0;;跳到40D
I40C GOTO I417
I40D MOVF 0x69 ,w
XORLW 0x3
BTFSS STATUS,0x2;69H=5?
GOTO I412;69H不=5;跳到412
GOTO I413;69H=5;跳到413
I412 GOTO I415
I413 BCF 0x26 ,0x1;26H.1=0返回
GOTO I416
I415 BSF 0x26,0x1;26H.1=1
I416 RETURN
I417 MOVF 0x70,W;
XORLW 0x5
BTFSS STATUS,0x2;70H=2?
GOTO I41C;70H不=2;跳到41C
GOTO I41D;70H=2;;跳到41D
I41C GOTO I427;跳到427
I41D DECF 0x69,w
BTFSS STATUS,0x2;69H=#3?
GOTO I422;69H不=3跳到422
GOTO I423;69H=3;;跳到423
I422 GOTO I425
I423 BCF 0x26,0x1;26H.1=0;返回
GOTO I426
I425 BSF 0x26,0x1;26H.1=1
I426 RETURN
I427 MOVF 0x70,w
XORLW 0x4
BTFSS STATUS,0x2;70H=3?
GOTO I42C
GOTO I42D;70H=3;跳到42D
I42C GOTO I436;70H不=3跳到436
I42D MOVF 0x69,w
XORLW 0x5
BTFSS STATUS,0x2;69H=0?
GOTO I431;69H不=0跳到431
GOTO I432;69H=0跳到432
I431 GOTO I434
I432 BCF 0x26,0x1;26H.1=0返回
GOTO 0x435
I434 BSF 0x26,0x1;26H.1=1
RETURN
I436 MOVF 0x70,w;70H=4?
XORLW 0x6
BTFSS STATUS,0x2
GOTO I43B;70H≠4跳到43B
GOTO I43C;70H=4跳到43C
I43B GOTO I446
I43C MOVF 0x69,w
XORLW 0x4
BTFSS STATUS,0x2;69H=6?
GOTO I441
GOTO I442;69H=6;;26H.1=0返回
I441 GOTO I444
I442 BCF 0x26,0x1
GOTO I445
I444 BSF 0x26,0x1;69H≠6;;26H.1=1返回
I445 RETURN
I446 MOVF 0x70,w
XORLW 0x2
BTFSS STATUS,0x2;70H=5?
GOTO I44B;70H≠5跳到44B
GOTO I44C;70H=5跳到44C
I44B GOTO I456
I44C MOVF 0x69,w
XORLW 0x6
BTFSS STATUS,0x2;69H=4?
GOTO I451;69H≠4跳到451
GOTO I452;69H=4跳到452
I451 GOTO I454
I452 BCF 0x26,0x1;26H.1=0返回
GOTO I455
I454 BSF 0x26,0x1;26H.1=1返回
I455 RETURN
I456 MOVF 0x70,W
XORLW 0x3
BTFSS STATUS,0x2;70H=6?
GOTO I45B;70H≠6跳到45B
GOTO I45D;70H=6;
I45B BSF 0x26 ,0x1;26H.1=1;返回
GOTO I467
I45D MOVF 0x69,w
XORLW 0x2
BTFSS STATUS,0x2 ;69H=2?
GOTO I462;69H≠2跳到462
GOTO I463;69H=2;跳到463
I462 GOTO I465
I463 BCF 0x26,0x1;26H.1=0返回
GOTO I466
I465 BSF 0x26,0x1;26H.1=1;
I466 RETURN
I467 RETURN
I468 DECF 0x70,w
BTFSS STATUS,0x2;70H-1送到70H=0?
GOTO I46C;70H≠0跳到46C
GOTO I46D;70H=0跳到46D
I46C GOTO I477
I46D MOVF 0x69,w
XORLW 0x3
BTFSS STATUS,0x2;69H=3?
GOTO I472;69H≠3跳到472;;26H.1=1返回
GOTO I473;69H=3;;26H.1=0返回
I472 GOTO I475
I473 BCF 0X26,0x1
GOTO I476
I475 BSF 0x26,0x1
I476 RETURN
I477 movf 0X70,W
XORLW 0
BTFSS STATUS,0x2;70H=0?
GOTO I47C;70H≠0跳到47C
GOTO I47D;70H=0跳到48D;
I47C GOTO I487
I47D MOVF 0x69,w
XORLW 0x1
BTFSS STATUS,0x2;69H=1?
GOTO I482;69H≠126H.1=1返回
GOTO I483;69H=1跳到483;;26H.1=0;返回
I482 GOTO I485
I483 BCF 0x26,0x1
GOTO I486
I485 BSF 0x26,0X1
I486 RETURN
|
評分
-
查看全部評分
|