?? xinhao.c
字號:
#include <string.h>
#include <stdlib.h>
#include "table.h"
/////////////////////////////////////////////////////////////////////////////
#define first_half 0x0001
#define half_empty 0x0002
/////////////////////////////////////////////////////////////////////////////
#pragma DATA_SECTION(TxBuf, "dmtx_sect")//為DMA發送緩沖分配固定地址
signed int TxBuf[800];
unsigned int status;
extern void dspinit();
extern void bsp0init();
extern void dmainit();
extern void bspstop();
extern firloop(signed int *DestAddr);
/////////////////////////////////////////////////////////////
unsigned int i,tp;
void main()
{
for(i=0;i<80;i++) //使發送緩沖區初始值為0
{
TxBuf[i]=0;
}
dmainit(); //DMA控制初始化
bsp0init(); //BSP0接口初始化
status=0;
/***************************************************
信號與系統使用端口
***************************************************/
// asm(" PORTW 6Ah,1H");
asm(" PORTW 1h,0bh"); //向外部地址1寫數據0bH
asm(" PORTW 1h,09h"); //向外部地址1寫數據09
// asm(" PORTW 0Ah,7H");
asm(" STM #3fffh, IFR"); //IFR寄存器賦初值
asm(" STM #3000h, IMR"); //IMR寄存器賦初值
asm(" RSBX INTM"); //使能中斷
while(1)
{
asm(" RSBX XF"); //使能XF
if((status&half_empty)==half_empty) //形成乒乓機制,進行循環濾波運算
{
asm(" SSBX XF"); //使XF置0
status&=~half_empty;
if((status&first_half)==first_half)
{
firloop(TxBuf); //對發送區前半部分的數據進行濾波運算
}
else
{
firloop(&TxBuf[400]); //對發送區后半部分的數據進行濾波計算
}
}
}
}
interrupt void dmtx() //DMA中斷子程序
{
asm(" STM #3fffh, IFR");
if((status&first_half)==first_half)
{
status&=~first_half;
status|=half_empty;
}
else
{
status|=first_half;
status|=half_empty;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -