📄 rwe2.lst
字号:
MPASM 5.13 RWE2.ASM 1-11-2008 13:19:22 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 LIST p=16F877A
00002 #include "P16F877A.INC"
00001 LIST
00002 ; P16F877A.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00400 LIST
00000024 00003 RXDATA EQU 24H ;定义接收数据单元
00000025 00004 TXDATA EQU 25H ;定义发送数据单元
00000026 00005 temp_1 EQU 26H
00000027 00006 temp_2 EQU 27H
00000029 00007 HIBYTE EQU 29H ;命令高字节暂存单元
0000002A 00008 LOBYTE EQU 2AH ;命令低字节暂存单元
0000002B 00009 DATBYT EQU 2BH ;数据暂存单元
00000040 00010 STATUR EQU 40H ;
00000033 00011 DATAVAL EQU 33H ;定义数据常数值
00000000 00012 CS EQU 0 ;片选引脚信号
00000004 00013 SDI EQU 4 ;发送引脚信号
00014
0000 00015 ORG 0H
0000 0000 00016 nop
0001 2804 00017 goto START
0002 0000 00018 nop
0003 0000 00019 nop
0004 00020 ORG 0004H
0004 00021 START
0004 1283 00022 bcf STATUS,RP0
0005 1683 00023 bsf STATUS,RP0
0006 3010 00024 movlw 10H ;设置C口
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0007 0087 00025 movwf TRISC
0008 3000 00026 movlw 00H
0009 0084 00027 movwf FSR
000A 00028 xxx
000A 1283 00029 bcf STATUS,RP0
000B 3021 00030 movlw B'00100001' ;发送使能位
000C 0094 00031 movwf SSPCON
000D 2036 00032 call EWEN
00033
000E 3002 00034 movlw B'00000010' ;命令位“010”写命令
000F 00A9 00035 movwf HIBYTE
0010 3033 00036 movlw DATAVAL ;数据
0011 00AB 00037 movwf DATBYT
0012 2045 00038 call WRITE
00039 ; goto $
0013 2068 00040 call delay_20ms
0014 00041 WRNEXT
00042
0014 1283 00043 bcf STATUS,RP0
0015 2036 00044 call EWEN
0016 3002 00045 movlw B'00000010'
0017 00A9 00046 movwf HIBYTE
0018 3020 00047 movlw 20h
0019 0084 00048 movwf FSR
001A 3099 00049 movlw 99h
MPASM 5.13 RWE2.ASM 1-11-2008 13:19:22 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
001B 00AB 00050 movwf DATBYT
001C 2045 00051 call WRITE
00052
00053
00054 ; call delay_20ms
00055 ; call WRITE
00056 ; call delay_20ms
00057 ; call WRITE
001D 0000 00058 nop
001E 0000 00059 nop
001F 281F 00060 GOTO $
0020 1A04 00061 btfsc FSR,4
0021 2814 00062 goto WRNEXT
00063
00064 ;读回数据
0022 3030 00065 movlw 30H
0023 0084 00066 movwf FSR
0024 3010 00067 movlw 10H
0025 00AA 00068 movwf LOBYTE
0026 3003 00069 movlw B'00000011' ;命令位“011”读命令
0027 00A9 00070 movwf HIBYTE
0028 00071 RDNEXT
0028 1283 00072 bcf STATUS,RP0
0029 3021 00073 movlw B'00100001'
002A 0094 00074 movwf SSPCON
002B 2036 00075 call EWEN
002C 0000 00076 nop
002D 0000 00077 nop
002E 0000 00078 nop
002F 0000 00079 nop
00080 ; call delay_20ms
0030 2050 00081 call READ
0031 0000 00082 nop
00083
0032 1A04 00084 btfsc FSR,4
0033 2828 00085 goto RDNEXT
0034 00086 LIMBO
0034 0000 00087 nop
0035 2834 00088 goto LIMBO
00089
00090 ;/*********************
00091 ;写使能
00092 ;/**********************
0036 00093 EWEN
0036 1283 00094 bcf STATUS,RP0
0037 1007 00095 bcf PORTC,CS
0038 3006 00096 movlw B'00000110'
0039 205F 00097 call OUTPUT
003A 0000 00098 nop
00099 ; call delay_20ms
003B 1407 00100 bsf PORTC,CS
003C 0008 00101 return
00102
MPASM 5.13 RWE2.ASM 1-11-2008 13:19:22 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00103
00104 ;/**********************
00105 ;读状态寄存器
00106 ;入口:无
00107 ;出口:读出的状态在STATUR中
00108 ;/**********************
003D 00109 RDSR
003D 1283 00110 bcf STATUS,RP0
003E 1007 00111 bcf PORTC,CS
003F 3005 00112 movlw B'00000101'
0040 205F 00113 call OUTPUT
0041 1407 00114 bsf PORTC,CS
0042 0824 00115 movf RXDATA,0
0043 00C0 00116 movwf STATUR
0044 0008 00117 return
00118 ;/***********************
00119 ;写一字节
00120 ;入口:"写命令码"在HIBYTE中,EEPROM地址指针在FSR中
00121 ;待写数据字节在DATBYT中
00122 ;出口:FSR指向下一地址
00123 ;/***********************
0045 00124 WRITE
0045 1283 00125 bcf STATUS,RP0
0046 1007 00126 bcf PORTC,CS ;片选
0047 0829 00127 movf HIBYTE,0 ;写命令
0048 205F 00128 call OUTPUT
0049 0804 00129 movf FSR,0 ;送地址
004A 205F 00130 call OUTPUT
004B 082B 00131 movf DATBYT,0 ;送数据
004C 205F 00132 call OUTPUT
00133
00134 ; call delay_20ms
004D 1407 00135 bsf PORTC,CS
Message[305]: Using default destination of 1 (file).
004E 0A84 00136 incf FSR
004F 0008 00137 return
00138 ;******************************************
00139 ;读一字节
00140 ;入口:读命令在HIBYTE,EEPROM地址在LOBYTE,
00141 ;单片机RAM地址在FSR
00142 ;出口:RAM单元放入一数据,LOBYTE加1,FSR加1
00143 ;******************************************
00144
0050 00145 READ
0050 1283 00146 bcf STATUS,RP0
0051 1007 00147 bcf PORTC,CS
00148 ; bsf SSPCON,CKP
0052 0829 00149 movf HIBYTE,0
0053 205F 00150 call OUTPUT
0054 082A 00151 movf LOBYTE,0
0055 205F 00152 call OUTPUT
0056 1214 00153 bcf SSPCON,CKP
0057 3000 00154 movlw 0
MPASM 5.13 RWE2.ASM 1-11-2008 13:19:22 PAGE 4
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0058 205F 00155 call OUTPUT
0059 1407 00156 bsf PORTC,CS
005A 0824 00157 movf RXDATA,0
005B 0080 00158 movwf INDF
Message[305]: Using default destination of 1 (file).
005C 0A84 00159 incf FSR
Message[305]: Using default destination of 1 (file).
005D 0AAA 00160 incf LOBYTE
005E 0008 00161 return
00162
00163 ;/**********************
00164 ;同时发送和接收一字节
00165 ;入口:待发送数据在W中
00166 ;出口:收到数据在RXDATA
00167 ;/***********************
005F 00168 OUTPUT
005F 0093 00169 movwf SSPBUF
0060 00170 LOOP1
0060 1303 00171 bcf STATUS,RP1
0061 1683 00172 bsf STATUS,RP0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0062 1C14 00173 btfss SSPSTAT,BF
0063 2860 00174 goto LOOP1
0064 1283 00175 bcf STATUS,RP0
0065 0813 00176 movf SSPBUF,0
0066 00A4 00177 movwf RXDATA
0067 0008 00178 return
00179
0068 00180 delay_20ms
0068 1283 1303 00181 banksel temp_1
006A 30FF 00182 movlw 0xff
006B 00A6 00183 movwf temp_1
006C 3007 00184 movlw 0x7
006D 00A7 00185 movwf temp_2
00186
006E 0BA6 00187 decfsz temp_1,f
006F 286E 00188 goto $-1
0070 0BA7 00189 decfsz temp_2,f
0071 286E 00190 goto $-3
0072 0008 00191 return
00192 end
MPASM 5.13 RWE2.ASM 1-11-2008 13:19:22 PAGE 5
SYMBOL TABLE
LABEL VALUE
ACKDT 00000005
ACKEN 00000004
ACKSTAT 00000006
ADCON0 0000001F
ADCON1 0000009F
ADCS0 00000006
ADCS1 00000007
ADCS2 00000006
ADDEN 00000003
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
BCLIE 00000003
BCLIF 00000003
BF 00000000
BRGH 00000002
C 00000000
C1INV 00000004
C1OUT 00000006
C2INV 00000005
C2OUT 00000007
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCP2CON 0000001D
CCP2IE 00000000
CCP2IF 00000000
CCP2M0 00000000
CCP2M1 00000001
CCP2M2 00000002
CCP2M3 00000003
CCP2X 00000005
CCP2Y 00000004
CCPR1H 00000016
CCPR1L 00000015
CCPR2H 0000001C
CCPR2L 0000001B
CHS0 00000003
CHS1 00000004
CHS2 00000005
CIS 00000003
CKE 00000006
CKP 00000004
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -