?? pd_sw1.lst
字號:
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 + -