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

📄 timer_send.lis

📁 AVR控制的SAB82525——HDLC通信 循环队列处理 完全是自己写的
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0100 0E940000          xcall pop_gset2
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbsym r i_dms 20 i
 0106                   .dbsym r tm 22 i
 0106                   .dbend
 0106                   .dbfunc e delay_1ms _delay_1ms fV
 0106           ;           i_dl -> R16,R17
                        .even
 0106           _delay_1ms::
 0106                   .dbline -1
 0106                   .dbline 179
 0106           ; //------------------------------------------------------------------
 0106           ; void delay_1ms(void)
 0106           ; {
 0106                   .dbline 181
 0106           ;       unsigned int i_dl;
 0106           ;       for(i_dl=1;i_dl<(unsigned int)(4*143-2);i_dl++)
 0106 01E0              ldi R16,1
 0108 10E0              ldi R17,0
 010A 02C0              xjmp L19
 010C           L16:
 010C                   .dbline 182
 010C           L17:
 010C                   .dbline 181
 010C 0F5F              subi R16,255  ; offset = 1
 010E 1F4F              sbci R17,255
 0110           L19:
 0110                   .dbline 181
 0110 0A33              cpi R16,58
 0112 E2E0              ldi R30,2
 0114 1E07              cpc R17,R30
 0116 D0F3              brlo L16
 0118                   .dbline -2
 0118                   .dbline 183
 0118           ;       ;
 0118           ; }
 0118           L15:
 0118                   .dbline 0 ; func end
 0118 0895              ret
 011A                   .dbsym r i_dl 16 i
 011A                   .dbend
 011A                   .dbfunc e transmit _transmit fV
 011A           ;            xfw -> R22
 011A           ;             it -> R20
                        .even
 011A           _transmit::
 011A 0E940000          xcall push_gset2
 011E                   .dbline -1
 011E                   .dbline 186
 011E           ; //------------------------------------------------------------------
 011E           ; void transmit(void)
 011E           ; {
 011E                   .dbline 187
 011E           ;       unsigned char it=0;
 011E 4427              clr R20
 0120                   .dbline 190
 0120           ;       unsigned char xfw;
 0120           ;       
 0120           ;       flag_txd=1;
 0120 81E0              ldi R24,1
 0122 80932200          sts _flag_txd,R24
 0126                   .dbline 192
 0126           ;       
 0126           ;       if(count!=0)
 0126 20900000          lds R2,_count
 012A 2220              tst R2
 012C 09F4              brne X1
 012E 33C0              xjmp L21
 0130           X1:
 0130                   .dbline 193
 0130           ;               {
 0130                   .dbline 194
 0130           ;                       DeQueue();
 0130 0E940000          xcall _DeQueue
 0134           L23:
 0134                   .dbline 196
 0134           L24:
 0134                   .dbline 196
 0134           ;                       
 0134           ;                       while(CEC==1);
 0134 80912120          lds R24,8225
 0138 8470              andi R24,4
 013A 8695              lsr R24
 013C 8695              lsr R24
 013E 8130              cpi R24,1
 0140 C9F3              breq L23
 0142           L26:
 0142                   .dbline 198
 0142           ;                       do
 0142           ;                       {
 0142                   .dbline 199
 0142           ;                               xfw=XFW;
 0142 60912120          lds R22,8225
 0146 6074              andi R22,64
 0148 6695              lsr R22
 014A 6695              lsr R22
 014C 6695              lsr R22
 014E 6695              lsr R22
 0150 6695              lsr R22
 0152 6695              lsr R22
 0154                   .dbline 200
 0154           L27:
 0154                   .dbline 200
 0154           ;                       }while(xfw!=1);
 0154 6130              cpi R22,1
 0156 A9F7              brne L26
 0158                   .dbline 202
 0158           ; 
 0158           ;                       for(it=0;it<pre_txd[32];it++)
 0158 4427              clr R20
 015A 0DC0              xjmp L32
 015C           L29:
 015C                   .dbline 203
 015C                   .dbline 204
 015C 80E0              ldi R24,<_pre_txd
 015E 90E0              ldi R25,>_pre_txd
 0160 E42F              mov R30,R20
 0162 FF27              clr R31
 0164 E80F              add R30,R24
 0166 F91F              adc R31,R25
 0168 2080              ldd R2,z+0
 016A E42F              mov R30,R20
 016C FF27              clr R31
 016E E050              subi R30,0  ; offset = 8192
 0170 F04E              sbci R31,224
 0172 2082              std z+0,R2
 0174                   .dbline 205
 0174           L30:
 0174                   .dbline 202
 0174 4395              inc R20
 0176           L32:
 0176                   .dbline 202
 0176 20902100          lds R2,_pre_txd+32
 017A 4215              cp R20,R2
 017C 78F3              brlo L29
 017E           L34:
 017E                   .dbline 207
 017E           L35:
 017E                   .dbline 207
 017E           ;                       {
 017E           ;                               XFIFO[0x2000+it]=pre_txd[it];
 017E           ;                       }
 017E           ;       
 017E           ;                       while(CEC==1);//等待CMDR可写
 017E 80912120          lds R24,8225
 0182 8470              andi R24,4
 0184 8695              lsr R24
 0186 8695              lsr R24
 0188 8130              cpi R24,1
 018A C9F3              breq L34
 018C                   .dbline 208
 018C           ;                       CMDR|=0x0a;             //写入,引起发送
 018C 80912120          lds R24,8225
 0190 8A60              ori R24,10
 0192 80932120          sts 8225,R24
 0196                   .dbline 210
 0196           ;       
 0196           ;               }
 0196           L21:
 0196                   .dbline 212
 0196           ;       
 0196           ;       delay_1ms();
 0196 B7DF              xcall _delay_1ms
 0198                   .dbline 213
 0198           ;       flag_txd=0;
 0198 2224              clr R2
 019A 20922200          sts _flag_txd,R2
 019E                   .dbline -2
 019E                   .dbline 215
 019E           ; 
 019E           ; }
 019E           L20:
 019E 0E940000          xcall pop_gset2
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbsym r xfw 22 c
 01A4                   .dbsym r it 20 c
 01A4                   .dbend
 01A4                   .dbfunc e main _main fI
 01A4           ;             im -> R20,R21
                        .even
 01A4           _main::
 01A4                   .dbline -1
 01A4                   .dbline 218
 01A4           ; //-----------------------------------------------------------------------
 01A4           ; main()
 01A4           ; {
 01A4                   .dbline 219
 01A4           ;   int im=0;
 01A4 4427              clr R20
 01A6 5527              clr R21
 01A8                   .dbline 221
 01A8           ;   
 01A8           ;   chipinit();
 01A8 2BDF              xcall _chipinit
 01AA                   .dbline 222
 01AA           ;   clk();
 01AA 50DF              xcall _clk
 01AC                   .dbline 223
 01AC           ;   resethdlc();
 01AC 46DF              xcall _resethdlc
 01AE                   .dbline 224
 01AE           ;   cshdlc();
 01AE 47DF              xcall _cshdlc
 01B0                   .dbline 225
 01B0           ;   automode();
 01B0 6EDF              xcall _automode
 01B2                   .dbline 226
 01B2           ;   InitQueue();
 01B2 0E940000          xcall _InitQueue
 01B6                   .dbline 227
 01B6           ;   timer0_init();
 01B6 0E940000          xcall _timer0_init
 01BA                   .dbline 228
 01BA           ;   int_open();
 01BA                   .dbline -2
 01BA                   .dbline 253
 01BA           ;       
 01BA           ;       /*txd[0]=0x02;
 01BA           ;       txd[1]=0x93;
 01BA           ;       EnQueue(txd,2);
 01BA           ;       
 01BA           ;       txd[0]=0x02;
 01BA           ;       txd[1]=0x00;
 01BA           ;       for(im=2;im<17;im++)
 01BA           ;               txd[im]=0x99;
 01BA           ;       EnQueue(txd,17);
 01BA           ;       for(im=0;im<27;im++)
 01BA           ;               txd[im]=0xaa;
 01BA           ;       EnQueue(txd,27);
 01BA           ;       
 01BA           ;       delay_nms(1000);
 01BA           ;       EnQueue(txd,27);
 01BA           ;       
 01BA           ;       while(flag_txd);
 01BA           ;       transmit();
 01BA           ;       while(flag_txd);
 01BA           ;       transmit();
 01BA           ;       while(flag_txd);
 01BA           ;       transmit();*/
 01BA           ; 
 01BA           ; }
 01BA           L37:
 01BA                   .dbline 0 ; func end
 01BA 45CF              xjmp _int_open
 01BC                   .dbsym r im 20 I
 01BC                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\Projects\AVR\Timer_Send\Timer_Send.c
 0000           _count::
 0000                   .blkb 1
 0001                   .dbsym e count _count c
 0001           _pre_txd::
 0001                   .blkb 33
 0022                   .dbsym e pre_txd _pre_txd A[33:33]c
 0022           _flag_txd::
 0022                   .blkb 1
 0023                   .dbsym e flag_txd _flag_txd c

⌨️ 快捷键说明

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