📄 baset.asm
字号:
.line 1
;----------------------------------------------------------------------
; 43 | VOID DS1302WriteByte(UNSIGNED idata)
;----------------------------------------------------------------------
push fp
ldiu sp,fp
.line 2
;----------------------------------------------------------------------
; 45 | register UNSIGNED i;
;----------------------------------------------------------------------
.line 4
;----------------------------------------------------------------------
; 46 | register UNSIGNED *pSerialPort0XCTRL = (UNSIGNED *)0x808042;
;----------------------------------------------------------------------
ldp @CL1,DP
ldiu @CL1,ar0 ; |46|
.line 6
;----------------------------------------------------------------------
; 48 | for(i = 0; i <= 7; i++, idata >>= 1)
;----------------------------------------------------------------------
ldiu 0,r2 ; |48|
cmpi 7,r2 ; |48|
bhi L10 ; |48|
;* Branch Occurs to L10 ; |48|
L6:
.line 9
;----------------------------------------------------------------------
; 51 | if(idata & 0x1) //写数据SDATA
;----------------------------------------------------------------------
ldiu 1,r0 ; |51|
tstb *-fp(2),r0 ; |51|
beq L8 ; |51|
;* Branch Occurs to L8 ; |51|
.line 10
;----------------------------------------------------------------------
; 52 | SetSDATA();
; 53 | else
;----------------------------------------------------------------------
ldiu 64,r0 ; |52|
or3 r0,*ar0,r0 ; |52|
sti r0,*ar0 ; |52|
bu L9 ; |42|
;* Branch Occurs to L9 ; |42|
L8:
.line 12
;----------------------------------------------------------------------
; 54 | ClrSDATA();
;----------------------------------------------------------------------
ldiu 4031,r0 ; |54|
and3 r0,*ar0,r0 ; |54|
sti r0,*ar0 ; |54|
L9:
.line 14
;----------------------------------------------------------------------
; 56 | ClrSCLK(); //SCLK清0
;----------------------------------------------------------------------
ldiu 4091,r0 ; |56|
and3 r0,*ar0,r0 ; |56|
sti r0,*ar0 ; |56|
.line 16
;----------------------------------------------------------------------
; 58 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |58|
callu r0 ; far call to _Delay1us ; |58|
; |58| Far Call Occurs
.line 18
;----------------------------------------------------------------------
; 60 | SetSCLK(); //SCLK置1,形成上升沿,数据写入DS1302
; |
;----------------------------------------------------------------------
ldiu 4,r0 ; |60|
or3 r0,*ar0,r0 ; |60|
sti r0,*ar0 ; |60|
.line 20
;----------------------------------------------------------------------
; 62 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |62|
callu r0 ; far call to _Delay1us ; |62|
; |62| Far Call Occurs
.line 6
ldiu *-fp(2),r0 ; |48|
lsh -1,r0 ; |48|
sti r0,*-fp(2) ; |48|
addi 1,r2 ; |48| Unsigned
cmpi 7,r2 ; |48|
bls L6 ; |48|
;* Branch Occurs to L6 ; |48|
L10:
.line 22
; Begin Epilog Code
ldiu *-fp(1),r1
ldiu *fp,fp
; Unallocate the Frame
subi 2,sp
bu r1
;* Branch Occurs to r1
.endfunc 64,000000000h,0
.sect ".text"
.global _DS1302ReadByte
.sym _DS1302ReadByte,_DS1302ReadByte,46,2,0
.func 69
;******************************************************************************
;* FUNCTION NAME: _DS1302ReadByte *
;* *
;* Architecture : TMS320C32 *
;* Calling Convention : Stack Parameter Convention *
;* Function Uses Regs : r0,r2,r3,ar0,st *
;* Regs Saved : *
;* Stack Frame : Full (w/ debug) *
;* Total Frame Size : 2 Call + 0 Parm + 0 Auto + 0 SOE = 2 words *
;******************************************************************************
_DS1302ReadByte:
;* r3 assigned to _i
.sym _i,3,14,4,32
;* r2 assigned to _j
.sym _j,2,14,4,32
;* ar0 assigned to _pSerialPort0XCTRL
.sym _pSerialPort0XCTRL,8,30,4,32
.line 1
;----------------------------------------------------------------------
; 69 | UNSIGNED DS1302ReadByte(VOID)
;----------------------------------------------------------------------
push fp
ldiu sp,fp
.line 3
;----------------------------------------------------------------------
; 71 | register UNSIGNED i,j = 0;
;----------------------------------------------------------------------
ldiu 0,r2 ; |71|
.line 4
;----------------------------------------------------------------------
; 72 | register UNSIGNED *pSerialPort0XCTRL = (UNSIGNED *)0x808042;
;----------------------------------------------------------------------
ldp @CL1,DP
ldiu @CL1,ar0 ; |72|
.line 6
;----------------------------------------------------------------------
; 74 | for(i = 0; i <= 7; i++)
;----------------------------------------------------------------------
ldiu 0,r3 ; |74|
cmpi 7,r3 ; |74|
bhi L16 ; |74|
;* Branch Occurs to L16 ; |74|
L13:
.line 8
;----------------------------------------------------------------------
; 76 | j >>= 1;
;----------------------------------------------------------------------
lsh -1,r2 ; |76|
.line 10
;----------------------------------------------------------------------
; 78 | ClrSCLK(); //SCLK清0,数据读出DS1302
;----------------------------------------------------------------------
ldiu 4091,r0 ; |78|
and3 r0,*ar0,r0 ; |78|
sti r0,*ar0 ; |78|
.line 11
;----------------------------------------------------------------------
; 79 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |79|
callu r0 ; far call to _Delay1us ; |79|
; |79| Far Call Occurs
.line 13
;----------------------------------------------------------------------
; 81 | if(DataDeclare()) //判断SDATA
;----------------------------------------------------------------------
ldiu 128,r0 ; |81|
tstb3 *ar0,r0 ; |81|
beq L15 ; |81|
;* Branch Occurs to L15 ; |81|
.line 14
;----------------------------------------------------------------------
; 82 | j |= 0x80;
;----------------------------------------------------------------------
or 128,r2 ; |82|
L15:
.line 16
;----------------------------------------------------------------------
; 84 | SetSCLK(); //SCLK置1,准备读下一位
;----------------------------------------------------------------------
ldiu 4,r0 ; |84|
or3 r0,*ar0,r0 ; |84|
sti r0,*ar0 ; |84|
.line 17
;----------------------------------------------------------------------
; 85 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |85|
callu r0 ; far call to _Delay1us ; |85|
; |85| Far Call Occurs
.line 6
addi 1,r3 ; |74| Unsigned
cmpi 7,r3 ; |74|
bls L13 ; |74|
;* Branch Occurs to L13 ; |74|
L16:
.line 20
;----------------------------------------------------------------------
; 88 | return(j);
;----------------------------------------------------------------------
.line 21
ldiu r2,r0 ; |89|
; Begin Epilog Code
ldiu *-fp(1),r1 ; |89|
ldiu *fp,fp ; |89|
; Unallocate the Frame
subi 2,sp ; |89|
bu r1
;* Branch Occurs to r1
.endfunc 89,000000000h,0
.sect ".text"
.global _DS1302BurstRead
.sym _DS1302BurstRead,_DS1302BurstRead,32,2,0
.func 94
;******************************************************************************
;* FUNCTION NAME: _DS1302BurstRead *
;* *
;* Architecture : TMS320C32 *
;* Calling Convention : Stack Parameter Convention *
;* Function Uses Regs : r0,r1,ar0,ar1,fp,sp,st,rs *
;* Regs Saved : *
;* Stack Frame : Full (w/ debug) *
;* Total Frame Size : 2 Call + 3 Parm + 0 Auto + 0 SOE = 5 words *
;******************************************************************************
_DS1302BurstRead:
.sym _SourceCode,-2,14,9,32
.sym _pDestination,-3,30,9,32
.sym _Length,-4,14,9,32
;* rs assigned to _i
.sym _i,20,14,4,32
;* ar1 assigned to _pSerialPort0XCTRL
.sym _pSerialPort0XCTRL,9,30,4,32
.line 1
;----------------------------------------------------------------------
; 94 | VOID DS1302BurstRead(UNSIGNED SourceCode, UNSIGNED *pDestination, UN
; | SIGNED Length)
;----------------------------------------------------------------------
push fp
ldiu sp,fp
.line 2
;----------------------------------------------------------------------
; 96 | register UNSIGNED i;
;----------------------------------------------------------------------
.line 4
;----------------------------------------------------------------------
; 97 | register UNSIGNED *pSerialPort0XCTRL = (UNSIGNED *)0x808042;
;----------------------------------------------------------------------
ldp @CL1,DP
ldiu @CL1,ar1 ; |97|
.line 6
;----------------------------------------------------------------------
; 99 | *pSerialPort0XCTRL = 0x222; //DSP口线设置为输出方式,初始值为0
;----------------------------------------------------------------------
ldiu 546,r0 ; |99|
sti r0,*ar1 ; |99|
.line 7
;----------------------------------------------------------------------
; 100 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |100|
callu r0 ; far call to _Delay1us ; |100|
; |100| Far Call Occurs
.line 9
;----------------------------------------------------------------------
; 102 | SetSRST(); //RST置1,允许操作DS1302
;----------------------------------------------------------------------
ldiu 1024,r0 ; |102|
or3 r0,*ar1,r0 ; |102|
sti r0,*ar1 ; |102|
.line 10
;----------------------------------------------------------------------
; 103 | Delay1us();
;----------------------------------------------------------------------
ldp @CL2,DP
ldiu @CL2,r0 ; |103|
callu r0 ; far call to _Delay1us ; |103|
; |103| Far Call Occurs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -