📄 uart.s
字号:
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 L148
L152:
.dbline 629
; 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 630
; break;
xjmp L148
L153:
.dbline 632
; 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 633
; break;
xjmp L148
L154:
.dbline 635
; 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 636
; break;
xjmp L148
L155:
.dbline 638
; 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 639
; break;
xjmp L148
L156:
.dbline 641
; 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 642
; break;
xjmp L148
L157:
.dbline 644
; 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 645
; break;
xjmp L148
L158:
.dbline 647
; 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 648
; break;
xjmp L148
L159:
.dbline 650
; 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 651
; break;
xjmp L148
L147:
.dbline 653
; default:
; bCode = '0';
ldi R24,48
mov R10,R24
.dbline 654
; break;
L148:
.dbline 656
; }
; return(bCode);
mov R16,R10
.dbline -2
L146:
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 666
; }
;
; //********************************************************************
; // 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 668
; 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 669
; if(bCode > 9)
ldi R24,9
cp R24,R2
brsh L161
.dbline 670
; {
.dbline 671
; bCode = bCode + 'A' - 0x0A;
mov R24,R2
subi R24,191 ; addi 65
subi R24,10
mov R10,R24
.dbline 672
; }
xjmp L162
L161:
.dbline 674
; else
; {
.dbline 675
; bCode = bCode + '0';
mov R24,R10
subi R24,208 ; addi 48
mov R10,R24
.dbline 676
; }
L162:
.dbline 677
; return(bCode);
mov R16,R10
.dbline -2
L160:
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 688
; }
;
; //********************************************************************
; // 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 L165
L164:
.dbline 690
.dbline 691
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 692
L165:
.dbline 689
; while(bIndex != 0)
tst R22
brne L164
.dbline -2
.dbline 693
; {
; SciBuffer_Tx_In(ptr,sbNumAsciiPick(dwData,bIndex--));
; }
; }
L163:
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 703
;
; //********************************************************************
; // 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 704
; if((bIndex >= 1) && (bIndex <= 8))
cpi R22,1
brlo L168
ldi R24,8
cp R24,R22
brlo L168
.dbline 705
; {
xjmp L171
L170:
.dbline 707
.dbline 708
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 709
L171:
.dbline 706
tst R22
brne L170
.dbline 710
L168:
.dbline -2
.dbline 711
; while(bIndex != 0)
; {
; SciBuffer_Tx_In(ptr,sbCharAsciiPick(dwData,bIndex--));
; }
; }
; }
L167:
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 721
;
; //********************************************************************
; // 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 L175
L174:
.dbline 723
.dbline 724
movw R30,R22
ld R18,Z+
movw R22,R30
movw R16,R20
xcall _SciBuffer_Tx_In
.dbline 725
L175:
.dbline 722
; while(*string != '\0')
movw R30,R22
ldd R2,z+0
tst R2
brne L174
.dbline -2
.dbline 726
; {
; SciBuffer_Tx_In(ptr,*string++);
; }
; }
L173:
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\市电电压频率测量系统\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\市电电压频率测量系统\UART.c
L135:
.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\市电电压频率测量系统\UART.c
L131:
.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\市电电压频率测量系统\UART.c
L127:
.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\市电电压频率测量系统\UART.c
L111:
.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\市电电压频率测量系统\UART.c
L86:
.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\市电电压频率测量系统\UART.c
L83:
.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\市电电压频率测量系统\UART.c
L76:
.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\市电电压频率测量系统\UART.c
L66:
.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\市电电压频率测量系统\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 + -