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

📄 main.asm

📁 自已编的程序.能通过RS485总线更新单片机中的应用程序,带一程序流程图和一些说明希望能对大家有所帮助!
💻 ASM
📖 第 1 页 / 共 3 页
字号:
           STA      ,X
           AIX      #$01
           LDA      MYADDRESS3
           STA      ,X
           AIX      #$01
           LDHX     #TR_BUFF
           MOV      #CRCLONG,CRCLENTH
           JSR      MAKECRC
           MOV      CRCH,X+
           MOV      CRCL,X+
           MOV      #$01,SENDSTRAT
           JMP      SRET
           
S_QUERY:                
DA_ER:     ;'返回数据错误状态帧
           ;SETB    DATA_ER
           LDHX     #TR_BUFF
           LDA      #MYTYPE
           STA      ,X
           AIX      #$01
           LDA      #LONGTH
           STA      ,X
           AIX      #$01
           LDA      #MYSTAT
           STA      ,X
           AIX      #$01
           LDA      MYADDRESS1
           STA      ,X
           AIX      #$01
           LDA      MYADDRESS2
           STA      ,X
           AIX      #$01
           LDA      MYADDRESS3
           STA      ,X
           AIX      #$01
           LDHX     #TR_BUFF
           MOV      #CRCLONG,CRCLENTH
           JSR      MAKECRC
           MOV      CRCH,X+
           MOV      CRCL,X+
           MOV      #$01,SENDSTRAT      
SRET:
           PULH
           CLI
           RTI
           
                            
;** ===================================================================
;**     Interrupt handler : isrINT_SCIError
;**
;**     Description :
;**         User interrupt service routine. 
;**     Parameters  : None
;**     Returns     : Nothing
;** ===================================================================
        ;XDEF    isrINT_SCIError


isrINT_SCIError:
  ; Write your interrupt code here ...
        SEI 
        PSHH
        LDHX  #$EB80
        LDA   ,X
        CMP   #NOTUPDA
        BNE   isrINT_SCIError1
        PULH
        JMP   $EB4C
isrINT_SCIError1:

        PULH        
        CLI
        RTI
  ; end of isrINT_SCIError 


;** ===================================================================
;**     Interrupt handler : isrINT_TIM1Ovr
;**
;**     Description :
;**         User interrupt service routine. 
;**     Parameters  : None
;**     Returns     : Nothing
;** ===================================================================
        ;XDEF    isrINT_TIM1Ovr


isrINT_TIM1Ovr:
  ; Write your interrupt code here ... 
        SEI
        PSHH
        LDHX  #$EB80
        LDA   ,X
        CMP   #NOTUPDA
        BNE   isrINT_TIM1Ovr1
        PULH
        JMP   $EB5E
isrINT_TIM1Ovr1:
        LDA   T1SC 
        BCLR  7,T1SC
        COM   PTB
        PULH        
        CLI
        RTI

  ; end of isrINT_TIM1Ovr
  
  
;************************************************************************
;************* '计算CRC校验码子程序 ***********
;'入口条件:(H:X) 数据首址
;  '       (CRCLENTH) 数据字节数
;'出口条件:CRC码符加在数据后面(高位在先),并在(CRCH,CRCL)中带回,CRCH高字节
;************************************************************************


          ;ORG $E000
MAKECRC:  ;RTS
          CLR   CRCH
          CLR   CRCL
MCRC01:	
          LDA     ,X
          PSHH
          PSHX
          EOR     CRCH
          STA     CRCT   
          BRSET   7,CRCT,MCRC02
          BCLR    7,CRCT
          ASLA
          STA     CRCT
          TAX
          CLRH
          LDA     CRCTB1,X
          EOR     CRCL
          STA     CRCH
          AIX     #$01
          LDA     CRCTB1,X
          STA     CRCL    
          BRA     MCRC03  
MCRC02:             
          ASLA
          STA     CRCT
          TAX
          CLRH
          LDA     CRCTB2,X
          EOR     CRCL
          STA     CRCH
          AIX     #$01
          LDA     CRCTB2,X
          STA     CRCL
MCRC03:
          PULX
          PULH
          AIX     #$01
          DBNZ    CRCLENTH,MCRC01
          RTS                       
        
CRCTB1: ;'前256字节
	    DC.B  $00,$00,$10,$21,$20,$42,$30,$63 
	    DC.B	$40,$84,$50,$a5,$60,$c6,$70,$e7 
	    DC.B	$81,$08,$91,$29,$a1,$4a,$b1,$6b 
	    DC.B	$c1,$8c,$d1,$ad,$e1,$ce,$f1,$ef 
	    DC.B	$12,$31,$02,$10,$32,$73,$22,$52 
	    DC.B	$52,$b5,$42,$94,$72,$f7,$62,$d6 
	    DC.B	$93,$39,$83,$18,$b3,$7b,$a3,$5a 
	    DC.B	$d3,$bd,$c3,$9c,$f3,$ff,$e3,$de 
	    DC.B	$24,$62,$34,$43,$04,$20,$14,$01 
	    DC.B	$64,$e6,$74,$c7,$44,$a4,$54,$85 
	    DC.B	$a5,$6a,$b5,$4b,$85,$28,$95,$09 
	    DC.B	$e5,$ee,$f5,$cf,$c5,$ac,$d5,$8d 
	    DC.B	$36,$53,$26,$72,$16,$11,$06,$30 
	    DC.B	$76,$d7,$66,$f6,$56,$95,$46,$b4 
	    DC.B	$b7,$5b,$a7,$7a,$97,$19,$87,$38 
	    DC.B	$f7,$df,$e7,$fe,$d7,$9d,$c7,$bc 
	    DC.B	$48,$c4,$58,$e5,$68,$86,$78,$a7 
	    DC.B	$08,$40,$18,$61,$28,$02,$38,$23 
	    DC.B	$c9,$cc,$d9,$ed,$e9,$8e,$f9,$af 
	    DC.B	$89,$48,$99,$69,$a9,$0a,$b9,$2b 
	    DC.B	$5a,$f5,$4a,$d4,$7a,$b7,$6a,$96 
	    DC.B	$1a,$71,$0a,$50,$3a,$33,$2a,$12 
	    DC.B	$db,$fd,$cb,$dc,$fb,$bf,$eb,$9e 
	    DC.B	$9b,$79,$8b,$58,$bb,$3b,$ab,$1a 
	    DC.B	$6c,$a6,$7c,$87,$4c,$e4,$5c,$c5 
	    DC.B	$2c,$22,$3c,$03,$0c,$60,$1c,$41 
	    DC.B	$ed,$ae,$fd,$8f,$cd,$ec,$dd,$cd 
	    DC.B	$ad,$2a,$bd,$0b,$8d,$68,$9d,$49 
	    DC.B	$7e,$97,$6e,$b6,$5e,$d5,$4e,$f4 
	    DC.B	$3e,$13,$2e,$32,$1e,$51,$0e,$70 
	    DC.B	$ff,$9f,$ef,$be,$df,$dd,$cf,$fc 
	    DC.B	$bf,$1b,$af,$3a,$9f,$59,$8f,$78 
CRCTB2: ;'后256字节
	    DC.B	$91,$88,$81,$a9,$b1,$ca,$a1,$eb 
	    DC.B	$d1,$0c,$c1,$2d,$f1,$4e,$e1,$6f 
	    DC.B	$10,$80,$00,$a1,$30,$c2,$20,$e3 
	    DC.B	$50,$04,$40,$25,$70,$46,$60,$67 
	    DC.B	$83,$b9,$93,$98,$a3,$fb,$b3,$da 
	    DC.B	$c3,$3d,$d3,$1c,$e3,$7f,$f3,$5e 
	    DC.B	$02,$b1,$12,$90,$22,$f3,$32,$d2 
	    DC.B	$42,$35,$52,$14,$62,$77,$72,$56 
	    DC.B	$b5,$ea,$a5,$cb,$95,$a8,$85,$89 
	    DC.B	$f5,$6e,$e5,$4f,$d5,$2c,$c5,$0d 
	    DC.B	$34,$e2,$24,$c3,$14,$a0,$04,$81 
	    DC.B	$74,$66,$64,$47,$54,$24,$44,$05 
	    DC.B	$a7,$db,$b7,$fa,$87,$99,$97,$b8 
	    DC.B	$e7,$5f,$f7,$7e,$c7,$1d,$d7,$3c 
	    DC.B	$26,$d3,$36,$f2,$06,$91,$16,$b0 
	    DC.B	$66,$57,$76,$76,$46,$15,$56,$34 
	    DC.B	$d9,$4c,$c9,$6d,$f9,$0e,$e9,$2f 
	    DC.B	$99,$c8,$89,$e9,$b9,$8a,$a9,$ab 
	    DC.B	$58,$44,$48,$65,$78,$06,$68,$27 
	    DC.B	$18,$c0,$08,$e1,$38,$82,$28,$a3 
	    DC.B	$cb,$7d,$db,$5c,$eb,$3f,$fb,$1e  
	    DC.B	$8b,$f9,$9b,$d8,$ab,$bb,$bb,$9a 
	    DC.B	$4a,$75,$5a,$54,$6a,$37,$7a,$16 
	    DC.B	$0a,$f1,$1a,$d0,$2a,$b3,$3a,$92 
	    DC.B	$fd,$2e,$ed,$0f,$dd,$6c,$cd,$4d 
	    DC.B	$bd,$aa,$ad,$8b,$9d,$e8,$8d,$c9 
	    DC.B	$7c,$26,$6c,$07,$5c,$64,$4c,$45 
	    DC.B	$3c,$a2,$2c,$83,$1c,$e0,$0c,$c1 
	    DC.B	$ef,$1f,$ff,$3e,$cf,$5d,$df,$7c 
	    DC.B	$af,$9b,$bf,$ba,$8f,$d9,$9f,$f8 
	    DC.B	$6e,$17,$7e,$36,$4e,$55,$5e,$74 
	    DC.B	$2e,$93,$3e,$b2,$0e,$d1,$1e,$f0
	    
	     
;** ###################################################################
;**LED显示段码表   
;** ###################################################################	       


SEG_EVEN:
      ;abcd fge
      DC.B  %11110101       ;0      0
      DC.B  %01100000       ;1      1
      DC.B  %11010011       ;2      2
      DC.B  %11110010       ;3      3
      DC.B  %01100110       ;4      4
      DC.B  %10110110       ;5      5
      DC.B  %10110111       ;6      6
      DC.B  %11100000       ;7      7
      DC.B  %11110111       ;8      8
      DC.B  %11110110       ;9      9
      DC.B  %11100111       ;A      A
      DC.B  %00110111       ;B      B
      DC.B  %10010101       ;C      C
      DC.B  %01110011       ;D      D
      DC.B  %10010111       ;E      E
      DC.B  %10000111       ;F      F
      DC.B	%00000010	      ;'-'	  10
      DC.B	%00000000	      ;BLACK	11
      DC.B	%00000010	      ;一	    12
      DC.B	%00010010	      ;二.	  13
      DC.B	%10010010    	  ;三.	  14
      DC.B	%11110101	      ;O	    15
      DC.B	%11000111	      ;P	    16
      DC.B  %01110101	      ;U	    17
      DC.B	%11100110	      ;Q	    18
      DC.B	%00100011	      ;n	    19
      DC.B	%00010101	      ;L	    1A
      DC.B	%01100111	      ;H	    1B
      DC.B	%00110011	      ;0	    1C
      DC.B	%00100000	      ;1	    1D
      DC.B	%10000101	      ;FD_SR	1E
      DC.B	%00010111 	    ;FD_ST	1F
      DC.B	%01110110	      ;FD_Y	  20
      DC.B	%01100000	      ;FD_I	  21
SEG_ODD:       
      ;bgc afed
      DC.B  %10101111       ;0      0
      DC.B  %10100000       ;1      1
      DC.B  %11001011       ;2      2
      DC.B  %11101001       ;3      3
      DC.B  %11100100       ;4      4
      DC.B  %01101101       ;5      5
      DC.B  %01101111       ;6      6
      DC.B  %10101000       ;7      7
      DC.B  %11101111       ;8      8
      DC.B  %11101101       ;9      9
      DC.B  %11101110       ;A      A
      DC.B  %01100111       ;B      B
      DC.B  %00001111       ;C      C
      DC.B  %11100011       ;D      D
      DC.B  %01001111       ;E      E
      DC.B  %01001110       ;F      F
      DC.B	%01000000	      ;'-'	  10
      DC.B	%00000000	      ;BLACK	11
      DC.B	%01000000	      ;一	    12
      DC.B	%01000001	      ;二.	  13
      DC.B	%01001001    	  ;三.	  14
      DC.B	%10101111	      ;O	    15
      DC.B	%11001110	      ;P	    16
      DC.B  %10100111	      ;U	    17
      DC.B	%11101100	      ;Q	    18
      DC.B	%01100010	      ;n	    19
      DC.B	%00000111	      ;L	    1A
      DC.B	%11100110	      ;H	    1B
      DC.B	%01100011	      ;0	    1C
      DC.B	%00100000 	    ;1	    1D
      DC.B	%00001110	      ;FD_SR	1E
      DC.B	%01000111	      ;FD_ST	1F
      DC.B	%11100101	      ;FD_Y	  20
      DC.B	%10100000	      ;FD_I	  21
      
;** ###################################################################
;**状态标记:UPDATE:升级状态
;**         NOTUPDA:非升级状态    
;** ###################################################################

             
             ORG  $EB80
             DC.B UPDATE
             

;** ###################################################################
;**状态标记:FLASH BLOCK PROTECT REGISTER(FLBPR)
;**#$EC00:**76543210******         
;**76543210是对应FLBPR位     
;**
;** ###################################################################

             
             ;ORG  $FFCF
             ;DC.B %10110000
             
             
;** ###################################################################
;***** MOR - Mask Option Register; 0x0000FFD0 ***
;***** Oscillator Select Bit
;** ################################################################### 

             
             ORG     MOR
             DC.B    $FF
             
            
;** ###################################################################
;** Interrupt vector table         
;** ###################################################################

        
        ORG     $FFDE                   ; Interrupt vector table
_vect:
        DC.W   $EB40                    ; Int.no.  0 INT_ADC (at FFDE)               Unassigned
        DC.W   $EB43                    ; Int.no.  1 INT_KBI (at FFE0)               Unassigned
        DC.W   isrINT_SCITransmit       ; Int.no.  2 INT_SCITransmit (at FFE2)       Used
        DC.W   isrINT_SCIReceive        ; Int.no.  3 INT_SCIReceive (at FFE4)        Used
        DC.W   isrINT_SCIError          ; Int.no.  4 INT_SCIError (at FFE6)          Used
        DC.W   $EB4F                    ; Int.no.  5 INT_MMIIC (at FFE8)             Unassigned
        DC.W   $EB52                    ; Int.no.  6 Reserved6 (at FFEA)             Unassigned
        DC.W   $EB55                    ; Int.no.  7 INT_TIM2Ovr (at FFEC)           Unassigned
        DC.W   $EB58                    ; Int.no.  8 INT_TIM2CH1 (at FFEE)           Unassigned
        DC.W   $EB5B                    ; Int.no.  9 INT_TIM2CH0 (at FFF0)           Unassigned
        DC.W   isrINT_TIM1Ovr           ; Int.no. 10 INT_TIM1Ovr (at FFF2)           Used
        DC.W   $EB61                    ; Int.no. 11 INT_TIM1CH1 (at FFF4)           Unassigned
        DC.W   $EB64                    ; Int.no. 12 INT_TIM1CH0 (at FFF6)           Unassigned
        DC.W   $EB67                    ; Int.no. 13 Reserved13 (at FFF8)            Unassigned
        DC.W   $EB6A                    ; Int.no. 14 INT_IRQ1 (at FFFA)              Unassigned
        DC.W   $EB6D                    ; Int.no. 15 INT_SWI (at FFFC)               Unassigned
        DC.W   _Startup                 ; Int.no. 16 INT_RESET (at FFFE)             Reset vector 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
                    
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -