?? adc.asm
字號:
;A/D轉換程序
STACK .usect "STACK",100h
AK_RCR11 .set 0000000001000000b ; 每幀一個字,字長為16 bit
AK_RCR21 .set 0000000001000000b ; 單相幀
AK_XCR11 .set 0000000001000000b
AK_XCR21 .set 0000000001000000b
AK_SRGR11 .set 0000000000010011b ;幀的寬度=CLKG,
;CLKG=CPU CLK/(1+CLKGDV)=CPU CLK/20
AK_SRGR21 .set 0011000000111111b
;GLKSM=1,采樣率發(fā)生器時鐘來源于CPU時鐘。
;FSGM=1,發(fā)送幀同步信號FSX由采樣率發(fā)生器FSG驅動。
;幀周期=(FPER+1)×CLKG=64 CLKG。
AK_PCR1 .set 0000101000000000b
;FSXM=1,FSRM=0,FSR引腳為輸入,由FSX引腳提供輸入。
;CLKRP=0,在CLKR的下降沿采樣接收數(shù)據(jù)。
SPSA1 .set 48h ;串口1子地址寄存器
McBSP1 .set 49h ;串口1子數(shù)據(jù)寄存器
DRR11 .set 41h ;數(shù)據(jù)接收寄存器1
DRR21 .set 40h ;數(shù)據(jù)接收寄存器2
.mmregs
.def _c_int00
.text
_c_int00
b start
nop
nop
NMI rete
nop
nop
nop
SINT17 .space 4*16
SINT18 .space 4*16
SINT19 .space 4*16
SINT20 .space 4*16
SINT21 .space 4*16
SINT22 .space 4*16
SINT23 .space 4*16
SINT24 .space 4*16
SINT25 .space 4*16
SINT26 .space 4*16
SINT27 .space 4*16
SINT28 .space 4*16
SINT29 .space 4*16
SINT30 .space 4*16
INT0 rsbx intm
rete
nop
nop
INT1 rsbx intm
rete
nop
nop
INT2 rsbx intm
rete
nop
nop
TINT: rete
nop
nop
nop
RINT0: rete
nop
nop
nop
XINT0: rete
nop
nop
nop
SINT6 .space 4*16
SINT7 .space 4*16
INT3: rete
nop
nop
nop
HPINT: rete
nop
nop
nop
RINT1: BD RECIV
nop
nop
nop
XINT1: rete
nop
nop
nop
;*************************
start: LD #0,DP
STM #STACK+100h,SP
STM #7FFFh,SWWSR
STM #1020h,PMST
SSBX INTM
SSBX CMPT ;CMPT=1,ARP可以改變
CALL ADCBSP
STM #0400H,IMR ;使能串口1接收中斷
RSBX INTM
STM #3000H,AR0 ;起始地址
STM #256,AR1 ;數(shù)據(jù)存儲器單元個數(shù)
WAIT: B WAIT
;以下為串口1的初始化程序
ADCBSP: STM #00h,SPSA1 ; 00h串口控制寄存器1子地址
STM #0000h,McBSP1 ; RRST=0
STM #01h,SPSA1 ; 01h串口控制寄存器2子地址
STM #0000h,McBSP1 ; XRST=GRST=0,將整個串口復位
STM #06h,SPSA1 ; 06h采樣率發(fā)生器寄存器1子地址
STM #AK_SRGR11,McBSP1
STM #07h ,SPSA1 ; 07h采樣率發(fā)生器寄存器2子地址
STM #AK_SRGR21,McBSP1
STM #02h ,SPSA1 ; 02h接收控制寄存器1子地址
STM #AK_RCR11,McBSP1
STM #03h ,SPSA1 ; 03h接收控制寄存器2子地址
STM #AK_RCR21,McBSP1
STM #04h ,SPSA1 ; 04h發(fā)送控制寄存器1子地址
STM #AK_XCR11,McBSP1
STM #05h ,SPSA1 ; 05h發(fā)送控制寄存器2子地址
STM #AK_XCR21,McBSP1
STM #0Eh ,SPSA1 ; 0Eh引腳控制寄存器子地址
STM #AK_PCR1,McBSP1
NOP ; 等待兩個CPU時鐘
NOP
STM #01h ,SPSA1 ; 01h串口控制寄存器2子地址
STM #0000001001000000b,McBSP1 ; GRST=1,使采樣率發(fā)生器工作
RPT #20
NOP
RSBX XF ; 選通ADC
STM #01h ,SPSA1 ; 01h串口控制寄存器2子地址
STM #0000001001000001b,McBSP1; XRST=1,發(fā)送部分退出復位狀態(tài)
STM #00h ,SPSA1 ; 00h串口控制寄存器1子地址
STM #0000000000000001b,McBSP1 ; RRST=1,接收部分退出復位狀態(tài)
STM #01h ,SPSA1 ; 01h串口控制寄存器2子地址
STM #0000001011000001b,McBSP1 ; FRST=1,產生幀同步脈沖信號
NOP
NOP
RET
RECIV: STM #3FFFH,IFR ; 串口1的接收中斷服務程序
LDM DRR11,A
LD #0,ARP
STL A,*AR0+
LD #1,ARP
BANZ LOOP1,*AR1-
STM #3000H,AR0 ; 重復采樣,設初值
STM #256,AR1
LOOP1: RETE
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -