📄 uart.s
字号:
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 618
; break;
xjmp L132
L136:
.dbline 620
; case 3:
; bCode = (dwData / 100) % 10 + '0';
ldi R20,100
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 621
; break;
xjmp L132
L137:
.dbline 623
; case 4:
; bCode = (dwData / 1000) % 10 + '0';
ldi R20,232
ldi R21,3
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 624
; break;
xjmp L132
L138:
.dbline 626
; case 5:
; bCode = (dwData / 10000) % 10 + '0';
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 627
; break;
xjmp L132
L139:
.dbline 629
; case 6 :
; bCode = (dwData / 100000) % 10 + '0';
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 630
; break;
xjmp L132
L140:
.dbline 632
; case 7 :
; bCode = (dwData / 1000000) % 10 + '0';
ldi R20,64
ldi R21,66
ldi R22,15
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 633
; break;
xjmp L132
L141:
.dbline 635
; case 8 :
; bCode = (dwData / 10000000) % 10 + '0';
ldi R20,128
ldi R21,150
ldi R22,152
ldi R23,0
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 636
; break;
xjmp L132
L142:
.dbline 638
; case 9 :
; bCode = (dwData / 100000000) % 10 + '0';
ldi R20,0
ldi R21,225
ldi R22,245
ldi R23,5
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 639
; break;
xjmp L132
L143:
.dbline 641
; case 10 :
; bCode = (dwData / 1000000000) % 10 + '0';
ldi R20,0
ldi R21,202
ldi R22,154
ldi R23,59
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R23
st -y,R22
st -y,R21
st -y,R20
movw R16,R2
movw R18,R4
xcall div32u
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
xcall mod32u
movw R2,R16
movw R4,R18
ldi R20,48
ldi R21,0
ldi R22,0
ldi R23,0
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
mov R10,R2
.dbline 642
; break;
xjmp L132
L131:
.dbline 644
; default:
; bCode = '0';
ldi R24,48
mov R10,R24
.dbline 645
; break;
L132:
.dbline 647
; }
; return(bCode);
mov R16,R10
.dbline -2
L130:
xcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r bCode 10 c
.dbsym l bPosition 10 c
.dbsym l dwData 6 l
.dbend
.dbfunc e sbCharAsciiPick _sbCharAsciiPick fc
; bCode -> R10
; bPosition -> y+10
; dwData -> y+6
.even
_sbCharAsciiPick::
xcall push_arg4
xcall push_gset3
.dbline -1
.dbline 657
; }
;
; //********************************************************************
; // Function : sbCharAsciiPick
; // Input : dwData -Input Data,bPosition-Selected Index
; // Output : Position Index in HEX System
; // Description : Extract out Selected Char in HEX System
; //********************************************************************
; INT8U sbCharAsciiPick(INT32U dwData,INT8U bPosition)
; {
.dbline 659
; INT8U bCode;
; bCode = (dwData >> ((bPosition - 1) << 2)) & 0x0000000F;
ldd R24,y+10
clr R25
sbiw R24,1
lsl R24
rol R25
lsl R24
rol R25
movw R30,R28
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R24
movw R16,R2
movw R18,R4
xcall lsr32
movw R2,R16
movw R4,R18
ldi R20,15
ldi R21,0
ldi R22,0
ldi R23,0
and R2,R20
and R3,R21
and R4,R22
and R5,R23
mov R10,R2
.dbline 660
; if(bCode > 9)
ldi R24,9
cp R24,R2
brsh L145
.dbline 661
; {
.dbline 662
; bCode = bCode + 'A' - 0x0A;
mov R24,R2
subi R24,191 ; addi 65
subi R24,10
mov R10,R24
.dbline 663
; }
xjmp L146
L145:
.dbline 665
; else
; {
.dbline 666
; bCode = bCode + '0';
mov R24,R10
subi R24,208 ; addi 48
mov R10,R24
.dbline 667
; }
L146:
.dbline 668
; return(bCode);
mov R16,R10
.dbline -2
L144:
xcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r bCode 10 c
.dbsym l bPosition 10 c
.dbsym l dwData 6 l
.dbend
.dbfunc e sDataToNumber _sDataToNumber fV
; ptr -> R20,R21
; bIndex -> R22
; dwData -> y+5
.even
_sDataToNumber::
xcall push_arg4
xcall push_gset2
sbiw R28,1
ldd R22,y+9
ldd R20,y+11
ldd R21,y+12
.dbline -1
.dbline 679
; }
;
; //********************************************************************
; // Function : sDataToNumber
; // Input : dwData -Input Data,bIndex - Length
; // ptr-Pointer to SCI Buffer
; // Output : none
; // Description : Convert Data to Decimal Number
; //********************************************************************
; void sDataToNumber(INT32U dwData,INT8U bIndex,struct SCI_Buffer *ptr)
; {
xjmp L149
L148:
.dbline 681
.dbline 682
mov R2,R22
subi R22,1
std y+0,R2
movw R30,R28
ldd R16,z+5
ldd R17,z+6
ldd R18,z+7
ldd R19,z+8
xcall _sbNumAsciiPick
mov R18,R16
movw R16,R20
xcall _SciBuffer_Tx_In
.dbline 683
L149:
.dbline 680
; while(bIndex != 0)
tst R22
brne L148
.dbline -2
.dbline 684
; {
; SciBuffer_Tx_In(ptr,sbNumAsciiPick(dwData,bIndex--));
; }
; }
L147:
adiw R28,1
xcall pop_gset2
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r ptr 20 pX
.dbsym r bIndex 22 c
.dbsym l dwData 5 l
.dbend
.dbfunc e sDataToChar _sDataToChar fV
; ptr -> R20,R21
; bIndex -> R22
; dwData -> y+5
.even
_sDataToChar::
xcall push_arg4
xcall push_gset2
sbiw R28,1
ldd R22,y+9
ldd R20,y+11
ldd R21,y+12
.dbline -1
.dbline 694
;
; //********************************************************************
; // Function : sDataToChar
; // Input : dwData -Input Data,bIndex - Length
; // ptr-Pointer to SCI Buffer
; // Output : none
; // Description : Convert Data to HEX Number
; //********************************************************************
; void sDataToChar(INT32U dwData,INT8U bIndex,struct SCI_Buffer *ptr)
; {
.dbline 695
; if((bIndex >= 1) && (bIndex <= 8))
cpi R22,1
brlo L152
ldi R24,8
cp R24,R22
brlo L152
.dbline 696
; {
xjmp L155
L154:
.dbline 698
.dbline 699
mov R2,R22
subi R22,1
std y+0,R2
movw R30,R28
ldd R16,z+5
ldd R17,z+6
ldd R18,z+7
ldd R19,z+8
xcall _sbCharAsciiPick
mov R18,R16
movw R16,R20
xcall _SciBuffer_Tx_In
.dbline 700
L155:
.dbline 697
tst R22
brne L154
.dbline 701
L152:
.dbline -2
.dbline 702
; while(bIndex != 0)
; {
; SciBuffer_Tx_In(ptr,sbCharAsciiPick(dwData,bIndex--));
; }
; }
; }
L151:
adiw R28,1
xcall pop_gset2
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r ptr 20 pX
.dbsym r bIndex 22 c
.dbsym l dwData 5 l
.dbend
.dbfunc e sStringToChar _sStringToChar fV
; ptr -> R20,R21
; string -> R22,R23
.even
_sStringToChar::
xcall push_gset2
movw R20,R18
movw R22,R16
.dbline -1
.dbline 712
;
; //********************************************************************
; // Function : sStringToChar
; // Input : string - pointer to char list
; // ptr-Pointer to SCI Buffer
; // Output : none
; // Description : Convert String to Char
; //********************************************************************
; void sStringToChar(INT8U *string,struct SCI_Buffer *ptr)
; {
xjmp L159
L158:
.dbline 714
.dbline 715
movw R30,R22
ld R18,Z+
movw R22,R30
movw R16,R20
xcall _SciBuffer_Tx_In
.dbline 716
L159:
.dbline 713
; while(*string != '\0')
movw R30,R22
ldd R2,z+0
tst R2
brne L158
.dbline -2
.dbline 717
; {
; SciBuffer_Tx_In(ptr,*string++);
; }
; }
L157:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r ptr 20 pX
.dbsym r string 22 pc
.dbend
.area bss(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
_stSciBuffer::
.blkb 153
.dbsym e stSciBuffer _stSciBuffer X
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L119:
.blkb 22
.area idata
.byte 'I,'l,'l,'e,'g,'a,'l,32,'P,'a,'r,'a,'m,'e,'t,'e
.byte 'r,'s,32,33,10,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L115:
.blkb 14
.area idata
.byte 'P,'a,'r,'a,'m,'e,'t,'e,'r,50,32,58,32,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L111:
.blkb 14
.area idata
.byte 'P,'a,'r,'a,'m,'e,'t,'e,'r,49,32,58,32,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L95:
.blkb 23
.area idata
.byte 'R,'e,'c,'e,'i,'v,'e,'d,32,'Z,'Z,32,'C,'o,'m,'m
.byte 'a,'n,'d,32,44,32,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L70:
.blkb 21
.area idata
.byte 'I,'l,'l,'e,'g,'a,'l,32,'P,'a,'r,'a,'m,'e,'t,'e
.byte 'r,32,33,10,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L67:
.blkb 13
.area idata
.byte 'P,'a,'r,'a,'m,'e,'t,'e,'r,32,58,32,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L60:
.blkb 23
.area idata
.byte 'R,'e,'c,'e,'i,'v,'e,'d,32,'Y,'Y,32,'C,'o,'m,'m
.byte 'a,'n,'d,32,44,32,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
L50:
.blkb 22
.area idata
.byte 'R,'e,'c,'e,'i,'v,'e,'d,32,'X,'X,32,'C,'o,'m,'m
.byte 'a,'n,'d,46,10,0
.area data(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
.area func_lit
PL_ZZCommand: .word `_ZZCommand
PL_YYCommand: .word `_YYCommand
PL_XXCommand: .word `_XXCommand
PL_D3Command: .word `_D3Command
PL_D2Command: .word `_D2Command
PL_D1Command: .word `_D1Command
PL_C2Command: .word `_C2Command
PL_C1Command: .word `_C1Command
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -