serial.lst

来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· LST 代码 · 共 1,452 行 · 第 1/5 页

LST
1,452
字号
Copyright (c) 1987-1999  Texas Instruments Incorporated 
serial.asm                                                           PAGE   16

     766                    .sym    _rec,1,12,1,16
     767                    .sym    _temp,2,12,1,16
     768                    .sym    _i,3,12,1,16
     769                    .sym    _simSerial,4,14,1,16
     770                    .line   3
     771            ;>>>>           uchar rec = 0,temp;
     772            ;>>>>           uchar i;
     773            ;>>>>           uint simSerial;
     774 0162 b900          LACK    0
     775 0163 b201          LARK    AR2,1
     776 0164 8be0          MAR     *0+
     777 0165 9080          SACL    * 
     778                    .line   7
     779            ;>>>>           simSerial = cfgdata[18] >> 8;   
     780            ;>>>>           switch( PIVR)
     781            ;>>>>                   case 0x0006: 
     782 0166 be46          RSXM
     783 0167 bc00!         LDPK    _cfgdata+18
     784 0168 1712!         LAC     _cfgdata+18,7
     785 0169 7803          ADRK    3
     786 016a 9980          SACH    * ,1
     787 016b 7980          B       L18
         016c 02f2' 
     788 016d       L19:
     789                    .line   12
     790            ;>>>>                   b_com_success = 1;                                                                      
     791 016d b901          LACK    1
     792 016e bc00!         LDPK    _b_com_success
     793 016f 9000!         SACL    _b_com_success
     794                    .line   13
     795            ;>>>>                   if(status_rx == 0 )
     796 0170 bc00!         LDPK    _status_rx
     797 0171 1000!         LAC     _status_rx
     798 0172 e308          BNZ     L20
         0173 0193' 
     799                    .line   15
     800            ;>>>>                                   len_rx = SCIRXBUF;                                                      
     801 0174 bc00!         LDPK    _SCIRXBUF
     802 0175 a900!         BLDD    _SCIRXBUF,#_len_rx
         0176 0000! 
     803                    .line   16
     804            ;>>>>                           if((len_rx > 4)&&(len_rx <188))  //接收数至少要有5个字节
     805 0177 bc00!         LDPK    _len_rx
     806 0178 6900!         ZALS    _len_rx
     807 0179 ba04          SUBK    4
     808 017a e3cc          BLEZ    L22
         017b 01b4' 
     809 017c 6900!         ZALS    _len_rx
     810 017d babc          SUBK    188
     811 017e e38c          BGEZ    L22
         017f 01b4' 
     812                    .line   18
     813            ;>>>>                                   p_rx = 0;
     814 0180 b900          LACK    0
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Thu Dec  8 11:06:24 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
serial.asm                                                           PAGE   17

     815 0181 bc00!         LDPK    _p_rx
     816 0182 9000!         SACL    _p_rx
     817                    .line   19
     818            ;>>>>                               pcdata[0] = len_rx;
     819 0183 bc00!         LDPK    _len_rx
     820 0184 a900!         BLDD    _len_rx,#_pcdata
         0185 0000! 
     821                    .line   20
     822            ;>>>>                               status_rx = 1;
     823 0186 b901          LACK    1
     824 0187 bc00!         LDPK    _status_rx
     825 0188 9000!         SACL    _status_rx
     826                    .line   21
     827            ;>>>>                               len_rx --; 
     828 0189 bc00!         LDPK    _len_rx
     829 018a 1000!         LAC     _len_rx
     830 018b ba01          SUBK    1
     831 018c 9000!         SACL    _len_rx
     832                    .line   22
     833            ;>>>>                               p_rx ++;                                
     834 018d bc00!         LDPK    _p_rx
     835 018e 1000!         LAC     _p_rx
     836 018f b801          ADDK    1
     837 0190 9000!         SACL    _p_rx
     838 0191 7980          B       L22
         0192 01b4' 
     839 0193       L20:
     840                    .line   25
     841            ;>>>>                       else if(status_rx == 1)
     842 0193 1000!         LAC     _status_rx
     843 0194 ba01          SUBK    1
     844 0195 e308          BNZ     L23
         0196 01af' 
     845                    .line   27
     846            ;>>>>                                   pcdata[p_rx] = SCIRXBUF;
     847 0197 bc00!         LDPK    _p_rx
     848 0198 1000!         LAC     _p_rx
     849 0199 bf90          ADLK    _pcdata+0,0
         019a 0000! 
     850 019b 8b88          MAR     * ,AR0
     851 019c 9080          SACL    * 
     852 019d 038b          LAR     AR3,* ,AR3
     853 019e a880          BLKD    #_SCIRXBUF,* 
         019f 0000! 
     854                    .line   28
     855            ;>>>>                               p_rx ++;
     856 01a0 1000!         LAC     _p_rx
     857 01a1 b801          ADDK    1
     858 01a2 9000!         SACL    _p_rx
     859                    .line   29
     860            ;>>>>                               len_rx--;                   
     861 01a3 bc00!         LDPK    _len_rx
     862 01a4 1000!         LAC     _len_rx
     863 01a5 ba01          SUBK    1
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Thu Dec  8 11:06:24 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
serial.asm                                                           PAGE   18

     864 01a6 9000!         SACL    _len_rx
     865                    .line   30
     866            ;>>>>                           if(len_rx == 0)
     867 01a7 1000!         LAC     _len_rx
     868 01a8 e308          BNZ     L22
         01a9 01b4' 
     869                    .line   32
     870            ;>>>>                                   status_rx = 2;
     871 01aa b902          LACK    2
     872 01ab bc00!         LDPK    _status_rx
     873 01ac 9000!         SACL    _status_rx
     874 01ad 7980          B       L22
         01ae 01b4' 
     875 01af       L23:
     876                    .line   35
     877            ;>>>>                       else{rec=SCIRXBUF;} //read to clear RXRDY flag      
     878 01af 8b8a          MAR     * ,AR2
     879 01b0 b201          LARK    AR2,1
     880 01b1 8be0          MAR     *0+
     881 01b2 a880          BLKD    #_SCIRXBUF,* 
         01b3 0000! 
     882 01b4       L22:
     883                    .line   36
     884            ;>>>>                       IFR |= 0x01;                                
     885 01b4 b901          LACK    1
     886 01b5 bc00!         LDPK    _IFR
     887 01b6 6d00!         OR      _IFR
     888 01b7 9000!         SACL    _IFR
     889                    .line   37
     890            ;>>>>                   break;
     891            ;>>>>                   case 0x0001:    //高优先级模式的外部引脚1中断
     892 01b8 7980          B       L25
         01b9 02fb' 
     893 01ba       L26:
     894                    .line   41
     895            ;>>>>                           if(simSerial == 0x06)delay52us();       //取电平的中间位置
     896 01ba 8b8a          MAR     * ,AR2
     897 01bb b204          LARK    AR2,4
     898 01bc 8be0          MAR     *0+
     899 01bd 1080          LAC     * 
     900 01be ba06          SUBK    6
     901 01bf e308          BNZ     L27
         01c0 01c5' 
     902 01c1 7a89          CALL    _delay52us,AR1
         01c2 0000! 
     903 01c3 7980          B       L28
         01c4 01d7' 
     904 01c5       L27:
     905                    .line   42
     906            ;>>>>                           else if(simSerial == 0x07)delay26us();  
     907 01c5 1080          LAC     * 
     908 01c6 ba07          SUBK    7
     909 01c7 e308          BNZ     L29
         01c8 01cd' 
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Thu Dec  8 11:06:24 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
serial.asm                                                           PAGE   19

     910 01c9 7a89          CALL    _delay26us,AR1
         01ca 0000! 
     911 01cb 7980          B       L28
         01cc 01d7' 
     912 01cd       L29:
     913                    .line   43
     914            ;>>>>                           else if(simSerial == 0x08)delay17us();  
     915 01cd 1080          LAC     * 
     916 01ce ba08          SUBK    8
     917 01cf e308          BNZ     L30
         01d0 01d5' 
     918 01d1 7a89          CALL    _delay17us,AR1
         01d2 0000! 
     919 01d3 7980          B       L28
         01d4 01d7' 
     920 01d5       L30:
     921                    .line   44
     922            ;>>>>                           else  delay26us();                  
     923 01d5 7a89          CALL    _delay26us,AR1
         01d6 0000! 
     924 01d7       L28:
     925                    .line   46
     926            ;>>>>                           for(i=0;i<8;i++)//读取一个字节
     927 01d7 b900          LACK    0
     928 01d8 8b8a          MAR     * ,AR2
     929 01d9 b203          LARK    AR2,3
     930 01da 8be0          MAR     *0+
     931 01db 9080          SACL    * 
     932 01dc 6980          ZALS    * 
     933 01dd ba08          SUBK    8
     934 01de e38c          BGEZ    L32
         01df 02a6' 
     935 01e0 8ba0          MAR     *+
     936 01e1       L31:
     937                    .line   48
     938            ;>>>>                                   if(simSerial == 0x06)delay104us();      //位与位之间宽度        
     939 01e1 1080          LAC     * 
     940 01e2 ba06          SUBK    6
     941 01e3 e308          BNZ     L33
         01e4 01e9' 
     942 01e5 7a89          CALL    _delay104us,AR1
         01e6 0000! 
     943 01e7 7980          B       L37
         01e8 028d' 
     944 01e9       L33:
     945                    .line   49
     946            ;>>>>                                   else if(simSerial == 0x07)delay52us();  
     947 01e9 1080          LAC     * 
     948 01ea ba07          SUBK    7
     949 01eb e308          BNZ     L35
         01ec 01f1' 
     950 01ed 7a89          CALL    _delay52us,AR1
         01ee 0000! 
     951 01ef 7980          B       L37
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Thu Dec  8 11:06:24 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
serial.asm                                                           PAGE   20

         01f0 028d' 
     952 01f1       L35:
     953                    .line   50
     954            ;>>>>                                   else if(simSerial == 0x08)delay34us();  
     955 01f1 1080          LAC     * 
     956 01f2 ba08          SUBK    8
     957 01f3 e308          BNZ     L36
         01f4 01f9' 
     958 01f5 7a89          CALL    _delay34us,AR1
         01f6 0000! 
     959 01f7 7980          B       L37
         01f8 028d' 
     960 01f9       L36:
     961                    .line   51
     962            ;>>>>                                   else  delay52us();                                      
     963            ;>>>>                                   switch(i)
     964 01f9 7a89          CALL    _delay52us,AR1
         01fa 0000! 
     965 01fb 7980          B       L37
         01fc 028d' 
     966 01fd       L38:
     967                    .line   54
     968            ;>>>>                                           case 0:{if( (PCDATDIR&0x10) == 0x10 )rec |= 0x01;break;}
     969 01fd b910          LACK    16
     970 01fe bc00!         LDPK    _PCDATDIR
     971 01ff 6e00!         AND     _PCDATDIR
     972 0200 8b89          MAR     * ,AR1
     973 0201 9080          SACL    * 
     974 0202 be47          SSXM
     975 0203 1080          LAC     * 
     976 0204 ba10          SUBK    16
     977 0205 e308          BNZ     L40
         0206 029c' 
     978 0207 b901          LACK    1
     979 0208 8b8a          MAR     * ,AR2
     980 0209 b201          LARK    AR2,1
     981 020a 8be0          MAR     *0+
     982 020b 6d80          OR      * 
     983 020c 9080          SACL    * 
     984 020d 7980          B       L40
         020e 029c' 
     985 020f       L41:
     986                    .line   55
     987            ;>>>>                                           case 1:{if( (PCDATDIR&0x10) == 0x10 )rec |= 0x02;break;}
     988 020f b910          LACK    16
     989 0210 bc00!         LDPK    _PCDATDIR
     990 0211 6e00!         AND     _PCDATDIR
     991 0212 8b89          MAR     * ,AR1
     992 0213 9080          SACL    * 
     993 0214 be47          SSXM
     994 0215 1080          LAC     * 
     995 0216 ba10          SUBK    16
     996 0217 e308          BNZ     L40
         0218 029c' 
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Thu Dec  8 11:06:24 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 

⌨️ 快捷键说明

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