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

📄 dessamp.lst

📁 microchip网站上找的pic18F458单片机的示例代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
                    00240 ; $$$ not yet implemented
                    00241         return
                    00242 
                    00243         endif   ; do_parallel
                    00244 
                    00245 
                    00246         if      do_serial
                    00247 
0028                00248 getcmd:
0028 303E           00249         movlw   '>'
0029 2063           00250         call    xmit
                    00251 
002A 300C           00252         movlw   cmd     ; get ten bytes from host
002B 0084           00253         movwf   FSR
002C 300A           00254         movlw   10
002D 008F           00255         movwf   temp
                    00256 
002E 204C           00257 getc1:  call    getdig
002F 0080           00258         movwf   INDF
0030 0E80           00259         swapf   INDF
0031 204C           00260         call    getdig
0032 0480           00261         iorwf   INDF
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE  6


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00262 
0033 0A84           00263         incf    FSR     ; advance to next byte
0034 0B8F           00264         decfsz  temp
0035 282E           00265         goto    getc1
                    00266 
                    00267         if      echo_input
0036 300D           00268         movlw   0x0d
0037 2063           00269         call    xmit
0038 300A           00270         movlw   0x0a
0039 2063           00271         call    xmit
                    00272         endif   ; echo_input
                    00273 
                    00274         if      do_parity
                    00275 
                    00276 ; test parity, return zero flag clear if error
                    00277         call    parchk
                    00278         xorwf   parity,W
                    00279         btfsc   STATUS,Z
                    00280         return
                    00281 
                    00282         movlw   parerr
                    00283         movwf   result
                    00284         bcf     STATUS,Z
                    00285         return
                    00286 
                    00287         else
                    00288 
003A 1503           00289         bsf     STATUS,Z
003B 0008           00290         return
                    00291 
                    00292         endif   ; do_parity
                    00293 
                    00294 
003C                00295 sendresult:
003C 300C           00296         movlw   cmd
003D 0084           00297         movwf   FSR
003E 300A           00298         movlw   10
003F 008F           00299         movwf   temp
                    00300 
0040 0E00           00301 sr1:    swapf   INDF,W
0041 205D           00302         call    xmitdig
0042 0800           00303         movf    INDF,W
0043 205D           00304         call    xmitdig
0044 0A84           00305         incf    FSR
0045 0B8F           00306         decfsz  temp
0046 2840           00307         goto    sr1
                    00308 
0047 300D           00309         movlw   0x0d
0048 2063           00310         call    xmit
0049 300A           00311         movlw   0x0a
004A 2063           00312         call    xmit
                    00313 
004B 0008           00314         return
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE  7


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00315 
                    00316 
004C                00317 getdig:
004C 2077           00318         call    recv
                    00319 
                    00320         if      echo_input
004D 0090           00321         movwf   temp2
004E 2063           00322         call    xmit
004F 0810           00323         movf    temp2,W
                    00324         endif   ; echo_input
                    00325 
0050 3ED0           00326         addlw   256-'0'
0051 1C03           00327         btfss   STATUS,C
0052 284C           00328         goto    getdig
0053 3EF6           00329         addlw   255-9
0054 1803           00330         btfsc   STATUS,C
0055 2858           00331         goto    getd1
0056 3E0A           00332         addlw   10
0057 0008           00333         return
                    00334 
0058 3EF3           00335 getd1:  addlw   255-12
0059 1803           00336         btfsc   STATUS,C
005A 284C           00337         goto    getdig
005B 3E10           00338         addlw   16
005C 0008           00339         return
                    00340 
                    00341 
005D                00342 xmitdig:
005D 390F           00343         andlw   0x0f
005E 3EF6           00344         addlw   0xf6
005F 1803           00345         btfsc   STATUS,C
0060 3E07           00346         addlw   0x07
0061 3E3A           00347         addlw   0x3a
0062 2863           00348         goto    xmit
                    00349 
                    00350         include "uarthd.inc"
                    00001 ; half duplex UART code by Rich Ottosen
                    00002 
                    00003         cblock
  00000011          00004 bitcnt
  00000012          00005 dlycnt
  00000013          00006 serreg
                    00007         endc
                    00008 
                    00009 
  00000017          00010 speed   equ     26-3            ; 9600 bps
                    00011 
                    00012 
                    00013 ;transmit character in w as 8 bits, no parity, 1 stop
                    00014 ;  this routine has the start, stop and data bits inverted because an inverting
                    00015 ;  rs-232 buffer is not used.
                    00016 
0063 0093           00017 xmit:   movwf   serreg
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE  8


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0064 300A           00018         movlw   10              ;put # of data bits + start bit + # stop bits
0065 0091           00019         movwf   bitcnt          ; into counter
0066 1403           00020         bsf     STATUS,C        ;set up the stop bit
0067 1505           00021         bsf     txd             ;send start bit
                    00022 
0068 3017           00023 xmt10:  movlw   speed           ;delay 1 bit time
0069 0092           00024         movwf   dlycnt
006A 0000           00025 xd1:    nop                     ;                               1 cycle
006B 0B92           00026         decfsz  dlycnt          ;                               1
006C 286A           00027         goto    xd1             ;                               2 =4 cycles
                    00028 
006D 0391           00029         decf    bitcnt          ;count the data bits
006E 1903           00030         btfsc   STATUS,Z
006F 2876           00031         goto    xmt30           ; and exit when done
0070 0C93           00032         rrf     serreg          ;get data bit into carry
0071 1803           00033         btfsc   STATUS,C        ;if carry is set
0072 1105           00034         bcf     txd             ; then xmit a zero
0073 1C03           00035         btfss   STATUS,C        ;if carry is clear
0074 1505           00036         bsf     txd             ; then transmit a one
0075 2868           00037         goto    xmt10
                    00038 
0076 3400           00039 xmt30:  retlw   0               ;return nothing
                    00040 
                    00041 
                    00042 ;receive a character as 8 bits, no parity, 1 stop and put in "serreg" and W
                    00043 ;  this routine has the start, stop and data bits inverted because an inverting
                    00044 ;  rs-232 buffer is not used.
                    00045 
0077 3009           00046 recv:   movlw   9               ;put # of data bits + 1 stop
0078 0091           00047         movwf   bitcnt          ; into counter
0079 1C85           00048 rc05:   btfss   rxd             ;wait for the start bit
007A 2879           00049         goto    rc05
                    00050 
007B 3017           00051 rdly1:  movlw   speed           ;delay 1/2 bit time
007C 0092           00052         movwf   dlycnt
007D 1003           00053         bcf     STATUS,C        ; by dividing "speed" by 2
007E 0C92           00054         rrf     dlycnt
007F 0000           00055 rd1:    nop                     ;                               1 cycle
0080 0B92           00056         decfsz  dlycnt          ;                               1
0081 287F           00057         goto    rd1             ;                               2 =4 cycles
                    00058 
0082 1C85           00059         btfss   rxd             ;is start still active?
0083 2877           00060         goto    recv            ; try again if not
                    00061 
0084 3017           00062 rc10:   movlw   speed           ;delay 1 bit time
0085 0092           00063         movwf   dlycnt
0086 0000           00064 rd2:    nop                     ;                               1 cycle
0087 0B92           00065         decfsz  dlycnt          ;                               1
0088 2886           00066         goto    rd2             ;                               2 =4 cycles
                    00067 
0089 0391           00068         decf    bitcnt          ;count the data bits
008A 1903           00069         btfsc   STATUS,Z
008B 2892           00070         goto    rc40            ; and exit when done
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE  9


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00071 
008C 1C85           00072         btfss   rxd             ;if data is a zero
008D 1403           00073         bsf     STATUS,C        ; then set the carry
008E 1885           00074         btfsc   rxd             ;if data is a one
008F 1003           00075         bcf     STATUS,C        ; then clear the carry
0090 0C93           00076         rrf     serreg          ;get carry into data bit 
0091 2884           00077         goto    rc10
                    00078 
0092 0813           00079 rc40:   movf    serreg,W
0093 0008           00080         return
                    00081 
                    00351 
                    00352          endif
                    00353 
                    00354 
                    00355 ;-----------------------------------------------------------------------------
                    00356 ; parity checking
                    00357 ;-----------------------------------------------------------------------------
                    00358 
0094                00359 parchk:
0094 300C           00360         movlw   cmd
0095 0084           00361         movwf   FSR
0096 3009           00362         movlw   9
0097 008F           00363         movwf   temp
0098 0103           00364         clrw
0099 0600           00365 parck0: xorwf   INDF,W
009A 0A84           00366         incf    FSR
009B 0B8F           00367         decfsz  temp
009C 2899           00368         goto    parck0
009D 0008           00369         return
                    00370 
                    00371 
                    00372 ;-----------------------------------------------------------------------------
                    00373 ; commands
                    00374 ;-----------------------------------------------------------------------------
                    00375 
009E                00376 version:
009E 3000           00377         movlw   00h
009F 0094           00378         movwf   keyl
00A0 3007           00379         movlw   07h
00A1 0095           00380         movwf   keyl+1
00A2                00381 echo:
00A2 0008           00382         return
                    00383 
                    00384 
                    00385         if      triple_des
                    00386 
                    00387 triple:
                    00388         movlw   sboxbase>>8     ; set up to call s-boxes
                    00389         movwf   PCLATH
                    00390 
                    00391         call    ip
                    00392 
MPASM 01.50 Released          DESSAMP.ASM   5-5-1997  16:06:32         PAGE 10


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00393         call    getkey
                    00394         call    descore
                    00395 
                    00396         movlw   8
                    00397         addwf   EEADR
                    00398 
                    00399         call    getkey
                    00400         call    desinvcore
                    00401 

⌨️ 快捷键说明

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