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

📄 pd_sw1.lst

📁 PIC12C508 MCU 模拟串行口
💻 LST
📖 第 1 页 / 共 2 页
字号:
MPASM 02.80 Released           PD_SW1.ASM   1-21-2009  16:46:11         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001         LIST N=0
                      00002         INCLUDE "D:\INC\P16C5X.INC"
                      00001         LIST
                      00002 ; P16C5X.INC  Standard Header File, Version 4.00    Microchip Technology, Inc.
                      00315         LIST
                      00003         INCLUDE "D:\INC\PIC_MAC.INC"
                      00118         LIST
                      00004 ; -------------------------------------------------
                      00005 ; Port Defines:
                      00006 #DEFINE P_RXD           GPIO,3
                      00007 ;                         76543210
  00000038            00008 GPIO_TRIS       EQU     B'00111000'
                      00009 ;GPIO_INIT      EQU     B'00111000'
                      00010 ;
                      00011 ;#define        P_DIRECT        PORTA,0
                      00012 ;
  00000009            00013 MY_ADDR         EQU     0X9     ; IIC 移位寄存器
                      00014 ;
  0000000A            00015 RXPROC          EQU     0X0A
  0000000B            00016 RXBUF           EQU     0X0B
  0000000C            00017 RXGAP           EQU     0X0C
                      00018 #DEFINE F_RXDF  RXGAP,6
                      00019 ;
  0000000D            00020 FLAGS           EQU     0X0D
                      00021 ;RUNFLAGS.7: UART 1/3 Tick Flag!
                      00022 #DEFINE F_SWON          FLAGS,0
                      00023 ;
  0000000E            00024 TICKH           EQU     0X0E
  0000000F            00025 TICKL           EQU     0X0F
                      00026 ; -------------------------------------------------
  00000010            00027 SWTIMER1        EQU     0X10
  00000011            00028 SWTIMER2        EQU     0X11
  00000012            00029 SWTIMER3        EQU     0X12
                      00030 ; -------------------------------------------------
0000                  00031                 ORG     0
0000   0000           00032                 NOP
0001   0A97           00033                 GOTO    SYS_RESET
                      00034 ; ==============================================================
0002   0E07           00035 SW_ONOFF        ANDLW   0X7
0003   01E2           00036                 ADDWF   PCL,F
0004   0A3D           00037                 GOTO    RESET_RX        ; 0
0005   0A3D           00038                 GOTO    RESET_RX        ; 1
0006   0A82           00039                 GOTO    SW1_OFF         ; 2
0007   0A85           00040                 GOTO    SW1_ON          ; 3
0008   0A89           00041                 GOTO    SW2_OFF         ; 4
0009   0A8C           00042                 GOTO    SW2_ON          ; 5
000A   0A90           00043                 GOTO    SW3_OFF         ; 6
000B   0A93           00044                 GOTO    SW3_ON          ; 7
                      00045 ; ==============================================================
000C   020A           00046 RX_BYTE         MOVFW   RXPROC
000D   0E07           00047                 ANDLW   0X7
000E   01E2           00048                 ADDWF   PCL,F
000F   0A63           00049                 GOTO    RX_ADDR         ; 0
0010   0A68           00050                 GOTO    RX_CMD1         ; 1
0011   0A6B           00051                 GOTO    RX_CMD2         ; 2
0012   0A75           00052                 GOTO    RX_DATA1        ; 3
0013   0A78           00053                 GOTO    RX_DATA2        ; 4
0014   0A3D           00054                 GOTO    RESET_RX        ; 5
0015   0A3D           00055                 GOTO    RESET_RX        ; 6
0016   0A3D           00056                 GOTO    RESET_RX        ; 7
                      00057 ; ==============================================================
0017   0201           00058 UART_BITS       MOVFW   TMR0
0018   018D           00059                 XORWF   FLAGS,W
0019   0E80           00060                 ANDLW   0X80            ; 2400bps
001A   0643           00061                 SKPNZ
001B   0A17           00062                 GOTO    UART_BITS
001C   01AD           00063                 XORWF   FLAGS,F
001D   0004           00064                 CLRWDT
                      00065 ;
001E   03EF           00066                 INCFSZ  TICKL,F
001F   0A21           00067                 SKP
0020   02AE           00068                 INCF    TICKH,F         ; TICKH.7:4.5秒时隙
                      00069 ;
0021   04CC           00070                 BCF     F_RXDF
0022   0766           00071                 SKPB    P_RXD           ; 采样RXD
0023   0A27           00072                 GOTO    RX_BIT_0
                      00073 ;
0024   02EC           00074 RX_BIT_1        DECFSZ  RXGAP,F
0025   0A29           00075                 GOTO    RX_BIT_PROC
0026   0A41           00076                 GOTO    RX_SYNC
                      00077 ;
0027   0C5A           00078 RX_BIT_0        MOVLW   (.64 + .26)
0028   002C           00079                 MOVWF   RXGAP
                      00080 ; -------------------------------------------------
0029   038A           00081 RX_BIT_PROC     SWAPF   RXPROC,W
002A   0E0F           00082                 ANDLW   0XF
002B   01E2           00083                 ADDWF   PCL,F
                      00084 ; -------------------------------------------------
002C   0800           00085                 RETLW   0X00            ; 0: 空操作,不接受指令,等待同步
002D   06CC           00086                 SKPNB   F_RXDF          ;*1: 测试停止位
002E   0810           00087                 RETLW   0X10            ; 2
002F   07CC           00088                 SKPB    F_RXDF          ;*3: 测试起始位
0030   0830           00089                 RETLW   0X30            ; 4
0031   0860           00090                 RETLW   0X60            ; 5
0032   07CC           00091                 SKPB    F_RXDF          ;*6: 检查起始位
0033   0A3D           00092                 GOTO    RESET_RX        ; 7: 起始位失败!
0034   006B           00093                 CLRF    RXBUF           ; 8
0035   05EB           00094                 BSF     RXBUF,7         ; 9
0036   08B0           00095                 RETLW   0XB0            ; A
                      00096 ;
0037   08C0           00097                 RETLW   0XC0            ;*B
0038   08D0           00098                 RETLW   0XD0            ;*C
0039   07CC           00099                 SKPB    F_RXDF          ;*D
003A   0503           00100                 SETC                    ; E
003B   032B           00101                 RRF     RXBUF,F         ; F
003C   08B0           00102                 RETLW   0XB0
                      00103 ; ==============================================================
003D   0C1A           00104 RESET_RX        MOVLW   .26
003E   002C           00105                 MOVWF   RXGAP
003F   006A           00106                 CLRF    RXPROC
0040   0A49           00107                 GOTO    WAIT_CMD
                      00108 ; ----------------------------------------------
0041   0C30           00109 RX_SYNC         MOVLW   0X30
0042   002A           00110                 MOVWF   RXPROC
0043   006C           00111                 CLRF    RXGAP
0044   050C           00112                 BSF     RXGAP,0
0045   0A49           00113                 GOTO    WAIT_CMD
                      00114 ; ----------------------------------------------
0046   018A           00115 DO_RXSTAT       XORWF   RXPROC,W
0047   0EF0           00116                 ANDLW   0XF0
0048   01AA           00117                 XORWF   RXPROC,F
                      00118 ; ----------------------------------------------
0049   07EE           00119 WAIT_CMD        SKPB    TICKH,7
004A   0A5B           00120                 GOTO    WAIT_CMD1
004B   04EE           00121                 BCF     TICKH,7
                      00122 ;
004C   0210           00123                 MOVFW   SWTIMER1
004D   0743           00124                 SKPZ
004E   03F0           00125                 INCFSZ  SWTIMER1,F
004F   0A51           00126                 SKP
0050   0406           00127                 BCF     GPIO,0
                      00128 ;
0051   0211           00129                 MOVFW   SWTIMER2
0052   0743           00130                 SKPZ
0053   03F1           00131                 INCFSZ  SWTIMER2,F
0054   0A56           00132                 SKP
0055   0426           00133                 BCF     GPIO,1
                      00134 ;
0056   0212           00135                 MOVFW   SWTIMER3
0057   0743           00136                 SKPZ
0058   03F2           00137                 INCFSZ  SWTIMER3,F
0059   0A5B           00138                 SKP
005A   0446           00139                 BCF     GPIO,2
                      00140 ; ----------------------------------------------
005B   0917           00141 WAIT_CMD1       CALL    UART_BITS
005C   0703           00142                 SKPC
005D   0A46           00143                 GOTO    DO_RXSTAT
005E   0C30           00144                 MOVLW   0X30
005F   03EB           00145                 INCFSZ  RXBUF,F                 ; 接收到的字节先加1
0060   090C           00146                 CALL    RX_BYTE                 ; 非FF,需解释
0061   002A           00147                 MOVWF   RXPROC
0062   0A49           00148                 GOTO    WAIT_CMD
                      00149 ; ==============================================================
                      00150 ; 来自RX_BYTE调用,入口RxBUF = 接收到的字节+1
0063   00CB           00151 RX_ADDR         DECF    RXBUF,W
0064   0189           00152                 XORWF   MY_ADDR,W
0065   0743           00153                 SKPZ
0066   0A3D           00154                 GOTO    RESET_RX        ; 地址不吻合
0067   0811           00155                 RETLW   0X11            ; 地址吻合,接收下一字节
                      00156 ; ----------------------------------------------
0068   02CB           00157 RX_CMD1         DECFSZ  RXBUF,W
0069   0A3D           00158                 GOTO    RESET_RX
006A   0812           00159                 RETLW   0X12
                      00160 ; ----------------------------------------------
006B   00EB           00161 RX_CMD2         DECF    RXBUF,F
006C   040D           00162                 BCF     F_SWON
006D   072B           00163                 SKPB    RXBUF,1
006E   050D           00164                 BSF     F_SWON
                      00165 ;
006F   042B           00166                 BCF     RXBUF,1
0070   020B           00167                 MOVFW   RXBUF
0071   0F09           00168                 XORLW   0X09
0072   0743           00169                 SKPZ
0073   0A3D           00170                 GOTO    RESET_RX
0074   0813           00171                 RETLW   0X13
                      00172 ; ----------------------------------------------
0075   02CB           00173 RX_DATA1        DECFSZ  RXBUF,W
0076   0A3D           00174                 GOTO    RESET_RX
0077   0814           00175                 RETLW   0X14
                      00176 ; ----------------------------------------------
0078   00CB           00177 RX_DATA2        DECF    RXBUF,W
0079   0EFC           00178                 ANDLW   0XFC
007A   0743           00179                 SKPZ
007B   0A3D           00180                 GOTO    RESET_RX        ; 仅处理 1,2,3
007C   00EB           00181                 DECF    RXBUF,F
007D   0403           00182                 CLRC
007E   060D           00183                 SKPNB   F_SWON
007F   0503           00184                 SETC
0080   034B           00185                 RLF     RXBUF,W
0081   0A02           00186                 GOTO    SW_ONOFF
                      00187 ; ----------------------------------------------
0082   0406           00188 SW1_OFF         BCF     GPIO,0
0083   0070           00189                 CLRF    SWTIMER1
0084   0A3D           00190                 GOTO    RESET_RX
0085   0506           00191 SW1_ON          BSF     GPIO,0
0086   0070           00192                 CLRF    SWTIMER1
0087   0530           00193                 BSF     SWTIMER1,1
0088   0A3D           00194                 GOTO    RESET_RX
                      00195 ; ----------------------------------------------
0089   0426           00196 SW2_OFF         BCF     GPIO,1
008A   0071           00197                 CLRF    SWTIMER2
008B   0A3D           00198                 GOTO    RESET_RX
008C   0526           00199 SW2_ON          BSF     GPIO,1
008D   0071           00200                 CLRF    SWTIMER2
008E   0531           00201                 BSF     SWTIMER2,1
008F   0A3D           00202                 GOTO    RESET_RX
                      00203 ; ----------------------------------------------
0090   0446           00204 SW3_OFF         BCF     GPIO,2
0091   0072           00205                 CLRF    SWTIMER3
0092   0A3D           00206                 GOTO    RESET_RX
0093   0546           00207 SW3_ON          BSF     GPIO,2
0094   0072           00208                 CLRF    SWTIMER3
0095   0532           00209                 BSF     SWTIMER3,1
0096   0A3D           00210                 GOTO    RESET_RX
                      00211 ; ==============================================================
                      00212 ;RESET
0097   0000           00213 SYS_RESET       NOP
0098   0004           00214                 CLRWDT
0099   0CDF           00215                 MOVLW   0XDF
009A   0002           00216                 OPTION
009B   0C38           00217                 MOVLW   GPIO_TRIS
009C   0006           00218                 TRIS    GPIO
009D   0066           00219                 CLRF    GPIO
                      00220 ; --------------------------------------
009E   0C07           00221                 MOVLW   0X7
009F   0024           00222                 MOVWF   FSR
00A0   003F           00223                 MOVWF   0X1F
00A1   0060           00224 CLR_RAM         CLRF    INDF
00A2   02A4           00225                 INCF    FSR,F
00A3   021F           00226                 MOVFW   0X1F
00A4   0743           00227                 SKPZ
00A5   0AA1           00228                 GOTO    CLR_RAM
00A6   0B80           00229                 GOTO    MYADDR
                      00230 ; ==============================================================

⌨️ 快捷键说明

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