?? dspctrl.c
字號:
#include "DSP28_Device.h"
unsigned long fff = 0x31F; //Q3
// 主函數(shù)
void main(void)
{
unsigned long i;
for(i=0; i<0xFFFFF; i++); //系統(tǒng)開機延遲時間
InitSysCtrl(); //系統(tǒng)初始化
// 將中斷服務(wù)程序放在L0SRAM中運行
memcpy( &isr_runstart, &isr_loadstart, &isr_loadend - &isr_loadstart);
// 將flash配置程序放在L0SRAM中運行
memcpy( &secureRamFuncs_runstart, &secureRamFuncs_loadstart, &secureRamFuncs_loadend - &secureRamFuncs_loadstart);
InitFlash();
// 配置中斷
DINT;
IER = 0x0000;
IFR = 0x0000;
// 開中斷
// IER |= M_INT2; //開事件管理器的周期中斷,比較中斷
// IER |= M_INT3;
// IER |= M_INT4;
// IER |= M_INT5;
// IER |= M_INT6;
// IER |= M_INT9; //開SCI的讀寫中斷
// 初始化擴展中斷
InitPieCtrl();
// 設(shè)置擴展中斷向量表
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
// 配置外設(shè)
InitPeripherals();
Max7219_Initial();
// 喂狗
for(;;)
{
KickDog();
Max7219_Display_char(fff);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
//>>數(shù)據(jù)傳輸格式.<</
void Max7219_Led(unsigned char add1,unsigned char data1)
{
unsigned char bitter=0x80,i=0;
GpioDataRegs.GPBDAT.bit.GPIOB1=0; //LOAD GPIOB1
for(i=0;i<8;i++)
{
GpioDataRegs.GPBDAT.bit.GPIOB2=0;
if((add1&bitter)==bitter)
{
GpioDataRegs.GPBDAT.bit.GPIOB0=1; //DIN GPIOB0
}
else
{
GpioDataRegs.GPBDAT.bit.GPIOB0=0;
}
GpioDataRegs.GPBDAT.bit.GPIOB2=1; //CLK GPIOB2
bitter=bitter>>1;
}
bitter=0x80;
for(i=0;i<8;i++)
{
GpioDataRegs.GPBDAT.bit.GPIOB2=0;
if((data1&bitter)==bitter)
{
GpioDataRegs.GPBDAT.bit.GPIOB0=1;
}
else
{
GpioDataRegs.GPBDAT.bit.GPIOB0=0;
}
GpioDataRegs.GPBDAT.bit.GPIOB2=1;
bitter=bitter>>1;
}
GpioDataRegs.GPBDAT.bit.GPIOB1=1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 0~9,blank,-,H,E,L,P */
void Max7219_Initial()
{
unsigned long i;
Max7219_Led(0xff,1); //數(shù)碼管全點亮,時長10ms;
for(i=0;i<0xFFD180;i++); //閃1s
Max7219_Led(0xff,0);
Max7219_Led(0xfb,0x7); //數(shù)碼官全部可以顯示。
Max7219_Led(0xfa,0x6); //數(shù)碼官亮度為最大。
Max7219_Led(0xf9,0xff); //BCD碼是顯示,每一位代表一個數(shù)碼位是否譯碼顯示,但只有四種工作方式:00,01,0f,ff
Max7219_Led(0xfc,1); //關(guān)斷模式,D0=1通常選擇操作狀態(tài)
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 0~9,a,b,c,d,e,f,-,blank */
void Max7219_Display(unsigned char t,unsigned char * p) //t為要顯示的數(shù)碼管位.p為要顯示的值,dp為是否有小數(shù)點
{
unsigned char m1,n1;
unsigned char pt;
Max7219_Led(0xf9,0x00);
if(t==2)
pt =0x80;
else
pt =0x0;
switch (* p)
{
case 0x0:{m1=t;n1=0x7E|pt;}break;
case 0x1:{m1=t;n1=0x30|pt;}break;
case 0x2:{m1=t;n1=0x6D|pt;}break;
case 0x3:{m1=t;n1=0x79|pt;}break;
case 0x4:{m1=t;n1=0x33|pt;}break;
case 0x5:{m1=t;n1=0x5B|pt;}break;
case 0x6:{m1=t;n1=0x5F|pt;}break;
case 0x7:{m1=t;n1=0x70|pt;}break;
case 0x8:{m1=t;n1=0x7F|pt;}break;
case 0x9:{m1=t;n1=0x7B|pt;}break;
case 0xa:{m1=t;n1=0x77|pt;}break;
case 0xb:{m1=t;n1=0x1F|pt;}break;
case 0xc:{m1=t;n1=0x0D|pt;}break;
case 0xd:{m1=t;n1=0x3D|pt;}break;
case 0xe:{m1=t;n1=0x4F|pt;}break;
case 0xf:{m1=t;n1=0x47|pt;}break;
case 'h':{m1=t;n1=0x17|pt;}break;
case 'l':{m1=t;n1=0x0E|pt;}break;
case 'p':{m1=t;n1=0x67|pt;}break;
case ' ':{m1=t;n1=0x00|pt;}break;
case '-':{m1=t;n1=0x01|pt;}break;
}
Max7219_Led(m1,n1);
}
void Max7219_Display_char(unsigned long f1)
{
int i;
unsigned long j;
unsigned char k;
unsigned long result;
unsigned char p[4] ={0};
unsigned char *pp;
result =(f1>>3) *10;
if(result>=10000)
{
}
else
// {
{
i=0;
while(result>0)
{
p[i] = result%10;
result = result/10;
i++;
}
}
pp = p;
for(k=0;k<4;k++)
{
Max7219_Display(k+1,pp);
pp++;
Max7219_Led(5,0x01);
}
for(j=0;j<0xFFFFFF;j++);
pp = p;
for(k=0;k<4;k++)
{
Max7219_Display(k+1,pp);
pp++;
Max7219_Led(5,0x0);
}
for(j=0;j<0xFFFFFF;j++);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -