?? queue_2d.lis
字號:
.module queue_2D.c
.area text(rom, con, rel)
0000 .dbfile E:\Projects\AVR\Timer_Send\queue_2D.c
0000 .dbfunc e InitQueue _InitQueue fV
.even
0000 _InitQueue::
0000 .dbline -1
0000 .dbline 6
0000 ; extern unsigned char pre_txd[33];
0000 ; unsigned char Buffer_Send[20][33];
0000 ; unsigned char front,rear;
0000 ; extern unsigned char count;
0000 ; void InitQueue()
0000 ; {
0000 .dbline 7
0000 ; front=0;
0000 2224 clr R2
0002 20920100 sts _front,R2
0006 .dbline 8
0006 ; rear=0;
0006 20920000 sts _rear,R2
000A .dbline 9
000A ; count=0;
000A 20920000 sts _count,R2
000E .dbline -2
000E .dbline 10
000E ; }
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e QueueEmpty _QueueEmpty fc
.even
0010 _QueueEmpty::
0010 .dbline -1
0010 .dbline 12
0010 ; unsigned char QueueEmpty()
0010 ; {
0010 .dbline 13
0010 ; if(count!=0)
0010 20900000 lds R2,_count
0014 2220 tst R2
0016 11F0 breq L3
0018 .dbline 14
0018 ; return 0;
0018 0027 clr R16
001A 01C0 xjmp L2
001C L3:
001C .dbline 16
001C ; else
001C ; return 1;
001C 01E0 ldi R16,1
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e QueueFull _QueueFull fc
.even
0020 _QueueFull::
0020 .dbline -1
0020 .dbline 20
0020 ; }
0020 ;
0020 ; unsigned char QueueFull()
0020 ; {
0020 .dbline 21
0020 ; if(count==20)
0020 80910000 lds R24,_count
0024 8431 cpi R24,20
0026 11F4 brne L6
0028 .dbline 22
0028 ; return 1;
0028 01E0 ldi R16,1
002A 01C0 xjmp L5
002C L6:
002C .dbline 24
002C ; else
002C ; return 0;
002C 0027 clr R16
002E .dbline -2
002E L5:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbend
0030 .dbfunc e EnQueue _EnQueue fV
0030 ; i_enQ -> R20
0030 ; num_enQ -> R18
0030 ; txd_data -> R16,R17
.even
0030 _EnQueue::
0030 0E940000 xcall push_gset1
0034 .dbline -1
0034 .dbline 28
0034 ; }
0034 ;
0034 ; void EnQueue(unsigned char txd_data[32],unsigned char num_enQ) //////入隊(duì)
0034 ; {
0034 .dbline 29
0034 ; unsigned char i_enQ=0;
0034 4427 clr R20
0036 .dbline 31
0036 ;
0036 ; for(i_enQ=0;i_enQ<num_enQ;i_enQ++)
0036 14C0 xjmp L12
0038 L9:
0038 .dbline 32
0038 .dbline 33
0038 20900000 lds R2,_rear
003C 81E2 ldi R24,33
003E 829D mul R24,R2
0040 1001 movw R2,R0
0042 80E0 ldi R24,<_Buffer_Send
0044 90E0 ldi R25,>_Buffer_Send
0046 280E add R2,R24
0048 391E adc R3,R25
004A E42F mov R30,R20
004C FF27 clr R31
004E E20D add R30,R2
0050 F31D adc R31,R3
0052 A42F mov R26,R20
0054 BB27 clr R27
0056 A00F add R26,R16
0058 B11F adc R27,R17
005A 2C90 ld R2,x
005C 2082 std z+0,R2
005E .dbline 34
005E L10:
005E .dbline 31
005E 4395 inc R20
0060 L12:
0060 .dbline 31
0060 4217 cp R20,R18
0062 50F3 brlo L9
0064 .dbline 36
0064 ; {
0064 ; Buffer_Send[rear][i_enQ]=txd_data[i_enQ];
0064 ; }
0064 ;
0064 ; Buffer_Send[rear][32]=num_enQ;
0064 20900000 lds R2,_rear
0068 81E2 ldi R24,33
006A 829D mul R24,R2
006C F001 movw R30,R0
006E 80E0 ldi R24,<_Buffer_Send+32
0070 90E0 ldi R25,>_Buffer_Send+32
0072 E80F add R30,R24
0074 F91F adc R31,R25
0076 2083 std z+0,R18
0078 .dbline 39
0078 ;
0078 ; //count++;
0078 ; if(rear>=19)
0078 822D mov R24,R2
007A 8331 cpi R24,19
007C 60F0 brlo L14
007E .dbline 40
007E ; {
007E .dbline 41
007E ; rear=0;
007E 2224 clr R2
0080 20920000 sts _rear,R2
0084 .dbline 42
0084 ; count=20+rear-front;
0084 20900100 lds R2,_front
0088 80910000 lds R24,_rear
008C 8C5E subi R24,236 ; addi 20
008E 8219 sub R24,R2
0090 80930000 sts _count,R24
0094 .dbline 43
0094 ; }
0094 0BC0 xjmp L15
0096 L14:
0096 .dbline 45
0096 .dbline 46
0096 80910000 lds R24,_rear
009A 8F5F subi R24,255 ; addi 1
009C 80930000 sts _rear,R24
00A0 .dbline 47
00A0 20900100 lds R2,_front
00A4 382E mov R3,R24
00A6 3218 sub R3,R2
00A8 30920000 sts _count,R3
00AC .dbline 48
00AC L15:
00AC .dbline -2
00AC .dbline 49
00AC ; else
00AC ; {
00AC ; rear++;
00AC ; count=rear-front;
00AC ; }
00AC ; }
00AC L8:
00AC 0E940000 xcall pop_gset1
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbsym r i_enQ 20 c
00B2 .dbsym r num_enQ 18 c
00B2 .dbsym r txd_data 16 pc
00B2 .dbend
00B2 .dbfunc e DeQueue _DeQueue fV
00B2 ; num_deQ -> R16
00B2 ; i_deQ -> R18
.even
00B2 _DeQueue::
00B2 .dbline -1
00B2 .dbline 52
00B2 ;
00B2 ; void DeQueue() ///////出隊(duì)
00B2 ; {
00B2 .dbline 53
00B2 ; unsigned char i_deQ=0;
00B2 2227 clr R18
00B4 .dbline 54
00B4 ; unsigned char num_deQ=0;
00B4 0027 clr R16
00B6 .dbline 56
00B6 ;
00B6 ; num_deQ=Buffer_Send[front][32];
00B6 20900100 lds R2,_front
00BA 81E2 ldi R24,33
00BC 829D mul R24,R2
00BE F001 movw R30,R0
00C0 80E0 ldi R24,<_Buffer_Send+32
00C2 90E0 ldi R25,>_Buffer_Send+32
00C4 E80F add R30,R24
00C6 F91F adc R31,R25
00C8 0081 ldd R16,z+0
00CA .dbline 58
00CA ;
00CA ; for(i_deQ=0;i_deQ<num_deQ;i_deQ++)
00CA 16C0 xjmp L21
00CC L18:
00CC .dbline 59
00CC .dbline 60
00CC 20900100 lds R2,_front
00D0 81E2 ldi R24,33
00D2 829D mul R24,R2
00D4 1001 movw R2,R0
00D6 80E0 ldi R24,<_Buffer_Send
00D8 90E0 ldi R25,>_Buffer_Send
00DA 280E add R2,R24
00DC 391E adc R3,R25
00DE E22F mov R30,R18
00E0 FF27 clr R31
00E2 E20D add R30,R2
00E4 F31D adc R31,R3
00E6 2080 ldd R2,z+0
00E8 80E0 ldi R24,<_pre_txd
00EA 90E0 ldi R25,>_pre_txd
00EC E22F mov R30,R18
00EE FF27 clr R31
00F0 E80F add R30,R24
00F2 F91F adc R31,R25
00F4 2082 std z+0,R2
00F6 .dbline 61
00F6 L19:
00F6 .dbline 58
00F6 2395 inc R18
00F8 L21:
00F8 .dbline 58
00F8 2017 cp R18,R16
00FA 40F3 brlo L18
00FC .dbline 63
00FC ; {
00FC ; pre_txd[i_deQ]=Buffer_Send[front][i_deQ];
00FC ; }
00FC ;
00FC ; pre_txd[32]=Buffer_Send[front][32];
00FC 20900100 lds R2,_front
0100 81E2 ldi R24,33
0102 829D mul R24,R2
0104 F001 movw R30,R0
0106 80E0 ldi R24,<_Buffer_Send+32
0108 90E0 ldi R25,>_Buffer_Send+32
010A E80F add R30,R24
010C F91F adc R31,R25
010E 2080 ldd R2,z+0
0110 20922000 sts _pre_txd+32,R2
0114 .dbline 72
0114 ; //Plus------------------------------------------------
0114 ; /*for(i_deQ=0;i_deQ<33;i_deQ++)
0114 ; {
0114 ; Buffer_Send[front][i_deQ]=0;
0114 ; }*/
0114 ; //----------------------------------------------------
0114 ;
0114 ; //count--;
0114 ; if(front>=19)
0114 80910100 lds R24,_front
0118 8331 cpi R24,19
011A 48F0 brlo L24
011C .dbline 73
011C ; {
011C .dbline 74
011C ; front=0;
011C 2224 clr R2
011E 20920100 sts _front,R2
0122 .dbline 75
0122 ; count=rear-front;
0122 30900000 lds R3,_rear
0126 3218 sub R3,R2
0128 30920000 sts _count,R3
012C .dbline 76
012C ; }
012C 0AC0 xjmp L25
012E L24:
012E .dbline 78
012E .dbline 79
012E 80910100 lds R24,_front
0132 8F5F subi R24,255 ; addi 1
0134 80930100 sts _front,R24
0138 .dbline 80
0138 30900000 lds R3,_rear
013C 381A sub R3,R24
013E 30920000 sts _count,R3
0142 .dbline 81
0142 L25:
0142 .dbline -2
0142 .dbline 82
0142 ; else
0142 ; {
0142 ; front++;
0142 ; count=rear-front;
0142 ; }
0142 ; }
0142 L16:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbsym r num_deQ 16 c
0144 .dbsym r i_deQ 18 c
0144 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\Projects\AVR\Timer_Send\queue_2D.c
0000 _rear::
0000 .blkb 1
0001 .dbsym e rear _rear c
0001 _front::
0001 .blkb 1
0002 .dbsym e front _front c
0002 _Buffer_Send::
0002 .blkb 660
0296 .dbsym e Buffer_Send _Buffer_Send A[660:20:33]c
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -