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

📄 other.lst

📁 透明传输的DTU。实现配置:microchip 18F6520,协议DL/T645。 全部C源码文件。
💻 LST
📖 第 1 页 / 共 4 页
字号:
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001         #include        <P18F6520.INC>
                      00001         LIST
                      00002 
                      00003 ;==========================================================================
                      00004 ;  $Id: P18F6520.INC,v 1.12.4.1 2005/02/15 17:35:35 curtiss Exp $
                      00005 ;  MPASM PIC18F6520 processor include
                      00006 ; 
                      00007 ;  (c) Copyright 1999-2005 Microchip Technology, All rights reserved
                      00008 ;==========================================================================
                      00009 
                      01439         LIST
                      00002 
                      00003 #define OSC4M
                      00004 #define IrTXD           PORTA,0 
                      00005 #define IrRXD           PORTB,0 
                      00006 
                      00007 GPRSDATA  UDATA_ACS
000000                00008 SerialBuf res 1
000001                00009 delay_cnt1 res 1        ;只在ASM文件中定义了这两个变量。
000002                00010 delay_cnt2 res 1
                      00011         
000003                00012 cUseInINT res 1
000004                00013 rBitCounter res 1
                      00014 
  0000                00015         EXTERN ByteReceived
  0000                00016         EXTERN RevTemp
  0000                00017         EXTERN IrTX9D
  0000                00018         EXTERN Ir_ByteToSend
                      00019 
                      00020         CODE
                      00021 ; ----------------------------------------------------  
000000                00022 RB0INT                                          ;软件模拟红外接收               
  0000                00023         GLOBAL RB0INT                   ; export so linker can see it
000000 5081           00024                 movf    PORTB,W
000002 EC?? F???      00025                 call    HalfBit         ;延时半个bit,到达起始位的中心点
000006 B081           00026                 btfsc   IrRXD           ;1tc
000008 EF?? F???      00027                 goto    SerialExit      ;是干扰,退出
                      00028 ;仍为低:是起始位               
                      00029 ;start bit
                      00030 ;延时1个bit,到达 bit0的中心点
00000C EC?? F???      00031                 call    DelayForNextBitCenter 
                      00032 ;bit0
000010 6A??           00033                 clrf    SerialBuf
000012 0E08           00034                 movlw   .8
000014 6E??           00035                 movwf   rBitCounter
000016                00036 SerialLoop:
000016 B081           00037                 btfsc   IrRXD
000018 EF?? F???      00038                 goto    SetBit1
00001C 90D8           00039                 bcf             STATUS,C
00001E EF?? F???      00040                 goto    SetBit2
000022                00041 SetBit1:
000022 80D8           00042                 bsf             STATUS,C
000024                00043 SetBit2:
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000024 32??           00044                 rrcf    SerialBuf,F
000026 EC?? F???      00045                 call    DelayForNextBitCenter
00002A 2E??           00046                 decfsz  rBitCounter,F   
00002C EF?? F???      00047                 goto    SerialLoop      
                      00048 ;再延时1个bit,跳过偶校验位,到达停止位的中心点
000030 EC?? F???      00049                 call    DelayForNextBitCenter 
                      00050 ;;;             btfss   IrRXD
                      00051 ;SerialError:   
                      00052 ;;;             goto    SerialExit      
                      00053 ;received stop bit
                      00054 ;ReceiveOK:
                      00055 ;收到一字节
                      00056 ;               bcf     INTCON, INT0IF          ;不清除INT0IF,这样在中断程序中就知道来的是红外还是485
000034 50??           00057                 movf    SerialBuf,W
000036 6E??           00058                 movwf   RevTemp
                      00059                 
000038 0012           00060                 return          ; 如何转到串口1的正常接收流程里去??
00003A                00061 SerialExit:
                      00062 ;停止位不为1,有错误,清除INT0IF退出
00003A 92F2           00063                 bcf     INTCON, INT0IF          ; Clear the RB interrupt flag.
                      00064 
00003C 0012           00065                 return
                      00066 
                      00067 ; --------------------------------------------------------------------------
                      00068 ; Half Bit Time=833us/2=417us,417us/1.11746us=373tc
                      00069 ; HalfBit routine 的延时数=373-17=356c  ;进入中断后经过17tc才调用Halfbit
                      00070 ; call          =2 tc
                      00071 ; movlw         =1 tc
                      00072 ; movwf         =1 tc
                      00073 ; Delay Loop    =351 tc(117x3)
                      00074 ; return        =2 tc
                      00075 
                      00076 ; Total         =356tc
                      00077 ; ------------------------------------------------------------------
                      00078 ; 如果是4M晶振,4分频后,1tc=1us
                      00079 ; Half Bit Time=833us/2=417us,417us/1us=417tc
                      00080 ; HalfBit routine 的延时数=417-17=400c  ;进入中断后经过17tc才调用Halfbit
                      00081 ; call          =2 tc
                      00082 ; movlw         =1 tc
                      00083 ; movwf         =1 tc
                      00084 ; Delay Loop    =393 tc(131x3)
                      00085 ; nop           =1 tc
                      00086 ; return        =2 tc
                      00087 
                      00088 ; Total         =400tc
00003E                00089 HalfBit:        
00003E 0E83           00090                 movlw   D'131'
000040 6E??           00091                 movwf   cUseInINT
000042                00092 HalfBit1:
000042 2E??           00093                 decfsz  cUseInINT,F
000044 EF?? F???      00094                 goto    HalfBit1
000048 0012           00095                 return
                      00096 ; --------------------------------------------------------------------------
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00097 ; 3.579545M晶振,4分频后,1tc=1.11746us
                      00098 ; 1 BIT TIME=833us/1.11746us=745 tc
                      00099 ; FullBit routine 的延时数=745 tc
                      00100 ; call          =2 tc
                      00101 ; movlw         =1 tc
                      00102 ; movwf         =1 tc
                      00103 ; Delay Loop    =246*3=738tc
                      00104 ; nop           =1 tc
                      00105 ; return        =2 tc
                      00106 ; Total         =745tc
                      00107 ; ---------------------------------------------------------
                      00108 ; 
                      00109 ; 如果是4M晶振,4分频后,1tc=1us
                      00110 ; 1BIT需要等待的机器周期数 = 833us/1us=833 tc
                      00111 ; FullBit routine 的延时数=833 tc
                      00112 ; call          =2 tc
                      00113 ; movlw         =1 tc
                      00114 ; movwf         =1 tc
                      00115 ; Delay Loop    =275*3=825tc
                      00116 ; nop*2         =2 tc
                      00117 ; return        =2 tc
                      00118 ; Total         =833tc
                      00119 ; 275单字节装不下,用两次
                      00120 ; ---------------------------------------------------------
00004A                00121 DelayForNextBitCenter:          ;前面的语句消耗6tc
00004A 0EC8           00122                 movlw   D'200'
00004C 6E??           00123                 movwf   cUseInINT
00004E                00124 DFN1:
00004E 2E??           00125                 decfsz  cUseInINT,F
000050 EF?? F???      00126                 goto    DFN1
                      00127 ;耗掉 2+1+1+600=604,剩下833-604=229个tc
000054 0E4B           00128                 movlw   D'75'           ;1tc
000056 6E??           00129                 movwf   cUseInINT       ;1tc
000058                00130 DFN2:                                           ;227,刨掉return还有225,正好cUseInINT=75
000058 2E??           00131                 decfsz  cUseInINT,F
00005A EF?? F???      00132                 goto    DFN2
00005E 0012           00133                 return
                      00134 
                      00135 ; =================================    
                      00136 
                      00137 ; 发送一字节子程序
                      00138 ; 入口:A       待发送字节
                      00139 ; 使用:SerialBuf,rBitCounter,rCounter
                      00140 ; 要求:发送前,应做以下准备
                      00141 ;       1.数据域的数据已加33H
                      00142 ;       2.关闭接收中断
                      00143 ;       3.关闭总中断
                      00144 ;       发送后,打开接收中断,打开总中断
                      00145 ;*****************************************************************************
                      00146 ; SEND SERIAL DATA
000060                00147 SendByte
  0000                00148         GLOBAL SendByte
000060 0E08           00149                 movlw   .8
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000062 6E??           00150                 movwf   rBitCounter
                      00151 ;发送起始位
000064 9080           00152                 bcf             IrTXD
000066 EC?? F???      00153                 call    DelayForNextBitCenter 
                      00154 ;发送8bit数据
00006A                00155 SendSDLoop:     
00006A B0??           00156                 btfsc   Ir_ByteToSend,0         
00006C EF?? F???      00157                 goto    SetTX1
000070                00158 SetTX0:
000070 9080           00159                 bcf             IrTXD
000072 EF?? F???      00160                 goto    Loop_Judge      
000076                00161 SetTX1:         
000076 8080           00162                 bsf             IrTXD
000078                00163 Loop_Judge:     
000078 EC?? F???      00164                 call    DelayForNextBitCenter 
00007C 32??           00165                 rrcf    Ir_ByteToSend,F 
00007E 2E??           00166                 decfsz  rBitCounter,F
000080 EF?? F???      00167                 goto    SendSDLoop      
                      00168 ;发送偶校验位           
000084 50??           00169                 movf    IrTX9D,W                        ; 读出接收到的数据
000086 A4D8           00170                 btfss   STATUS,Z                ;Z=1?(bit9=0)
000088 EF?? F???      00171                 goto    SB1
00008C 9080           00172                 bcf             IrTXD                   ;yes,bit9=0
00008E EF?? F???      00173                 goto    SB2
000092                00174 SB1:
000092 8080           00175                 bsf             IrTXD
000094                00176 SB2:
000094 EC?? F???      00177                 call    DelayForNextBitCenter 
                      00178 ;发送停止位
000098 8080           00179                 bsf             IrTXD
00009A EC?? F???      00180                 call    DelayForNextBitCenter 
00009E 0000           00181                 nop
0000A0 0012           00182                 return
                      00183 ; =================================    
0000A2                00184 delay1ms
  0000                00185         GLOBAL delay1ms ; export so linker can see it
0000A2 0E01           00186         movlw   0x01
0000A4 EF?? F???      00187         goto    DL0
0000A8                00188 delay2ms
  0000                00189         GLOBAL delay2ms ; export so linker can see it
0000A8 0E02           00190         movlw   0x02
0000AA EF?? F???      00191         goto    DL0
0000AE                00192 delay4ms
  0000                00193         GLOBAL delay4ms ; export so linker can see it
0000AE 06??           00194         DECF    delay_cnt1
0000B0 06??           00195         DECF    delay_cnt1
                      00196 
0000B2 0E05           00197         movlw   0x05
0000B4 EF?? F???      00198         goto    DL0
                      00199         
0000B8                00200 delay10ms
  0000                00201         GLOBAL delay10ms ; export so linker can see it
                      00202 ; 4MHz crystal,延时10.027ms,周期数 T=D10027
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0000B8 0E0D           00203         movlw   D'13'
0000BA EF?? F???      00204         goto    DL0
0000BE                00205 delay20ms
  0000                00206         GLOBAL delay20ms                ; export so linker can see it
0000BE 0E1A           00207         movlw   D'26'
0000C0 EF?? F???      00208         goto    DL0
                      00209         
0000C4                00210 delay50ms
  0000                00211         GLOBAL delay50ms                ; export so linker can see it
0000C4 0E41           00212         movlw   D'65'                   
0000C6 EF?? F???      00213         goto    DL0
                      00214 
0000CA                00215 delay200ms
  0000                00216         GLOBAL delay200ms               ; export so linker can see it
0000CA 0EFF           00217         movlw   D'255'                  
0000CC                00218 DL0
0000CC 6E??           00219         movwf   delay_cnt2
0000CE 68??           00220         SETF    delay_cnt1
0000D0                00221 DL1
0000D0 06??           00222         DECF    delay_cnt1
0000D2 E1??           00223         BNZ             DL1
0000D4 0004           00224         clrwdt
0000D6 06??           00225         DECF    delay_cnt2
0000D8 E1??           00226         BNZ             DL1
0000DA 0000           00227         nop
0000DC                00228 done
0000DC 0012           00229         return
                      00230 
                      00231         END
MPASM  5.04                         OTHER.ASM   6-28-2007  13:54:35         PAGE  6


SYMBOL TABLE
  LABEL                             VALUE 

A                                 00000000
ACCESS                            00000000
ACKDT                             00000005
ACKEN                             00000004
ACKSTAT                           00000006
ADCON0                            00000FC2
ADCON1                            00000FC1
ADCON2                            00000FC0
ADCS0                             00000000
ADCS1                             00000001
ADCS2                             00000002
ADDEN                             00000003
ADEN                              00000003
ADFM                              00000007
ADIE                              00000006
ADIF                              00000006
ADIP                              00000006
ADON                              00000000
ADRES                             00000FC3
ADRESH                            00000FC4
ADRESL                            00000FC3
AN0                               00000000
AN1                               00000001
AN10                              00000005
AN11                              00000006
AN2                               00000002
AN3                               00000003
AN4                               00000005
AN5                               00000000
AN6                               00000001

⌨️ 快捷键说明

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