找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11814|回复: 7
打印 上一主题 下一主题
收起左侧

电动车控制完整程序,希望对大家有帮助

  [复制链接]
跳转到指定楼层
楼主
ID:90671 发表于 2015-9-29 08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;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

评分

参与人数 2黑币 +60 收起 理由
zwk34 + 10 共享资料的黑币奖励!
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:98168 发表于 2015-12-3 16:11 | 只看该作者
谢谢分享,谢谢
回复

使用道具 举报

板凳
ID:97969 发表于 2015-12-4 19:29 | 只看该作者
谢谢,分享
回复

使用道具 举报

地板
ID:33634 发表于 2016-8-31 21:43 | 只看该作者
谢谢分享,向楼主致敬。
回复

使用道具 举报

5#
ID:76408 发表于 2018-2-25 16:47 | 只看该作者
楼主辛苦了,收藏了。
回复

使用道具 举报

6#
ID:114814 发表于 2018-10-19 15:41 | 只看该作者
牛逼啊
回复

使用道具 举报

7#
ID:223688 发表于 2018-10-20 08:23 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:507914 发表于 2019-4-11 11:11 | 只看该作者
好好学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表