📄 timer_send.lis
字号:
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 + -