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

📄 main.asmbak

📁 该压缩包里包含了51单片机syncoms的ISP源程序代码。
💻 ASMBAK
📖 第 1 页 / 共 3 页
字号:
;HexToAscii:A 为要转换的字节  if(A<0x0A) A+='0'; else A+=('A'-0x0A);
;================================================================================    
HexToAscii:
          CLR       C
          SUBB      A,        #0x0A
          JC        HexToAscii_L1
          ADD       A,        #0x07
HexToAscii_L1:
          ADD       A,        #0x30
          ADD       A,        #0x0A
          RET 
;================================================================================
;Ascii1ToHex(A) A=A&0FH
;CHANGE:A
;================================================================================
Ascii1ToHex:
          PUSH      B
          MOV       B,        R0
          PUSH      B
          MOV       B,        R1
          PUSH      B
          MOV       B,        R2
          PUSH      B
          
          LCALL     UpperChar  
          MOV       B,        A
          MOV       R0,       A  
          MOV       R1,       #'A'
          MOV       R2,       #'Z'
          LCALL     IsInRange
          JNC       Ascii1ToHex_L1
          MOV       A,        B
          CLR       C
          SUBB      A,        #'A'
          ADD       A,        #10
          SJMP      Ascii1ToHex_RET
Ascii1ToHex_L1:                    
          MOV       A,        B
          MOV       R0,       A  
          MOV       R1,       #'0'
          MOV       R2,       #'9'
          LCALL     IsInRange
          JNC       Ascii1ToHex_L2
          MOV       A,        B
          CLR       C
          SUBB      A,        #30H
          SJMP      Ascii1ToHex_RET
Ascii1ToHex_L2:
          MOV       A,        #10H
Ascii1ToHex_RET:
          POP       B
          MOV       R2,       B
          POP       B
          MOV       R1,       B
          POP       B
          MOV       R0,       B
          POP       B
          RET
;================================================================================
;Debug_In:A 为要发送的字节
;================================================================================
Debug_In:
          CPL       WatchDog
          JNB       RI,       Debug_In
          CLR       RI          
          MOV       A,        SBUF
          RET
;================================================================================
;Debug_Byte:A 为要发送的字节
;================================================================================
Debug_Byte:
          CLR       ES                ;关闭串口0中断
		        MOV       SBUF,     A
Debug_Byte_L1:   
          CPL       WatchDog
		        JNB       TI,       Debug_Byte_L1
		        CLR       TI
          SETB      ES                ;允许串口0中断
		        RET        
;================================================================================
;Debug_Byte_Hex:A 为要发送的字节
;================================================================================
Debug_Byte_Hex:
          PUSH      B
          
          MOV       B,        A
          ANL       A,        #11110000B
          RL	       A
          RL        A
          RL        A
          RL        A
          LCALL     HexToAscii
          LCALL     Debug_Byte
          
          MOV       A,        B
          ANL       A,        #00001111B
          LCALL     HexToAscii
          LCALL     Debug_Byte
          
          MOV       A,   #20H
          LCALL     Debug_Byte
          
          MOV       A,        B
          
          POP       B
		        RET
;================================================================================
;Debug_Str:StrPtr 为要发送的字符串地址,如:Str_Test:DB 6,"Test",0DH,0AH
;================================================================================
Debug_Str:
          PUSH      DPH
          PUSH      DPL
          PUSH      B
          PUSH      ACC
          
          MOV       DPH,      StrPtr
          MOV       DPL,      StrPtr+1
          CLR	      A
		        MOVC	     A,        @A+DPTR
		        JZ        Debug_Str_L2
		        INC       DPTR                          ;DPTR为字符串地址
          MOV       B,        A                   ;B为长度
Debug_Str_L1:
          CLR	      A
		        MOVC	     A,        @A+DPTR
          LCALL     Debug_Byte
		        INC	      DPTR
		        DJNZ      B,        Debug_Str_L1
Debug_Str_L2:		        
		        POP       ACC
		        POP       B
		        POP       DPL
		        POP       DPH
		        RET
;================================================================================
;Debug_Mem:MemPtr 为要发送的字符串地址,MemLen 为发送长度
;================================================================================
Debug_Mem:
          PUSH      DPH
          PUSH      DPL
          PUSH      B
          PUSH      ACC
          MOV       A,        R0
          PUSH      ACC
          MOV       A,        R1
          PUSH      ACC
          
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_Addr)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_Addr)
          LCALL     Debug_Str
                 
          MOV       A,        MemPtr
          LCALL     Debug_Byte_Hex
          
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str          

          MOV       A,        MemLen
          JZ        Debug_Mem_L3
          
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_Data)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_Data)
          LCALL     Debug_Str 
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 
          
          MOV       R0,       MemPtr
          MOV       R1,       MemLen
          MOV       B,        #10H
Debug_Mem_L1:
          CLR	      A
          MOV	      A,        @R0
		        LCALL     Debug_Byte_Hex
		        INC       R0
		        DJNZ      B,        Debug_Mem_l2
          MOV       B,        #10H
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 
Debug_Mem_l2:               
		        DJNZ	     R1,       Debug_Mem_L1
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 

Debug_Mem_L3:         
          POP       ACC
          MOV       R1,       A  
          POP       ACC
          MOV       R0,       A  
          POP       ACC
          POP       B
          POP       DPL
          POP       DPH          
		        RET
;================================================================================
;Debug_Rom:RomPtr 为要发送的字符串地址,RomLen 为发送长度
;================================================================================
Debug_Rom:
          PUSH      DPH
          PUSH      DPL
          PUSH      B
          PUSH      ACC
          MOV       A,        R0
          PUSH      ACC
                    
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_Addr)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_Addr)
          LCALL     Debug_Str
                 
          MOV       A,        RomPtr
          LCALL     Debug_Byte_Hex
          MOV       A,        RomPtr+1
          LCALL     Debug_Byte_Hex
        
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str          
          
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_Data)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_Data)
          LCALL     Debug_Str 
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 
          
          MOV       DPH,      RomPtr
          MOV       DPL,      RomPtr+1
          MOV       R0,       RomLen
          MOV       B,        #10H
Debug_Rom_L1:
          CLR       A
          MOVC      A,        @A+DPTR
          LCALL     Debug_Byte_Hex
          INC       DPTR
          DJNZ      B,        Debug_Rom_L2
          MOV       B,        #10H
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 
Debug_Rom_L2:               
		        DJNZ	     R0,       Debug_Rom_L1
          MOV       ?Debug_Str?BYTE+0,  #HIGH(Str_LF)
          MOV       ?Debug_Str?BYTE+1,  #LOW(Str_LF)
          LCALL     Debug_Str 

Debug_Rom_L3:         
          POP       ACC
          MOV       R0,       A  
          POP       ACC
          POP       B
          POP       DPL
          POP       DPH          
		        RET
;================================================================================
Str_Addr:           DB 5,0B5H,0D8H,0D6H,0B7H,3AH
Str_Data:           DB 5,0CAH,0FDH,0BEH,0DDH,3AH
Str_LF:             DB 2,0DH,0AH
Str_Star:           DB 37,"***********************************",0DH,0AH
Str_Title1:         DB 37,"*         ISP(SYCMOS5964)         *",0DH,0AH
Str_Title2:         DB 37,"*        ZhengTL  05.07.12        *",0DH,0AH
Str_Select1:        DB 37,"*        1: Chip Erease           *",0DH,0AH
Str_Select2:        DB 37,"*        2: Page Erease           *",0DH,0AH
Str_Select3:        DB 37,"*        3: Program               *",0DH,0AH
Str_Select4:        DB 37,"*        4: Protect               *",0DH,0AH
Str_Select5:        DB 37,"*        5: Reset System          *",0DH,0AH
Str_Select6:        DB 37,"*        Other: Show Rom          *",0DH,0AH
Str_Choice:         DB 15,"Your Choice Is:"
Str_ChipErease:     DB 12,"ChipErease",0DH,0AH
Str_PageErease:     DB 12,"PageErease",0DH,0AH
Str_Program:        DB 09,"Program",0DH,0AH
Str_Protect:        DB 09,"Protect",0DH,0AH
Str_ShowRom:        DB 10,"Show Rom",0DH,0AH
Str_AreYouSure:     DB 19,"Are You Sure?(Y/N):"
Str_Success:        DB 10,"Success!",0DH,0AH
Str_Failure:        DB 10,"Failure!",0DH,0AH
Str_InputPageAddr:  DB 19,"Input Page Address:"
Str_PageAddr:       DB 16,"Page Address Is:"
Str_DownLoadHex:    DB 27,"Please Download Your Hex!",0DH,0AH
;================================================================================          
END

⌨️ 快捷键说明

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