亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dspbird.cpp

?? LED數碼顯示源程序
?? CPP
字號:
/*-----------------------------------------
  DSP菜鳥的第1個定時器實戰演示程序
HotPower@126.com 

2005.6.20        于西安大雁塔村隊部

http://hotpower.21ic.org
-----------------------------------------*/
#include <cstdio> //C語言可以用stdio.h
#include <cstring>//C語言可以用string.h
#include "C5402DEF.h"//DSP菜鳥HotPower創建

volatile bool IOXF;
volatile unsigned int SystemRamTest;

extern "C" interrupt void Timer0Isr();
extern "C" interrupt void Timer1Isr();

extern "C" interrupt void Eint0Isr();
extern "C" interrupt void Eint1Isr();
extern "C" interrupt void Eint2Isr();
extern "C" interrupt void Eint3Isr();


/*-----------------------------------------
         LED數碼字符定義
-------------------------------------------*/

//共陽極數碼管(左移)

#define LedSegA  0x01
#define LedSegB  0x02
#define LedSegC  0x04
#define LedSegD  0x08
#define LedSegE  0x10
#define LedSegF  0x20
#define LedSegG  0x40
#define LedSegH  0x80

//

//共陽極數碼管(右移)
/*
#define LedSegA  0x80
#define LedSegB  0x40
#define LedSegC  0x20
#define LedSegD  0x10
#define LedSegE  0x08
#define LedSegF  0x04
#define LedSegG  0x02
#define LedSegH  0x01
*/
//

#define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF          )
#define LedChar1 (          LedSegB + LedSegC										 )
#define LedChar2 (LedSegA + LedSegB           + LedSegD + LedSegE           + LedSegG)
#define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD                     + LedSegG)
#define LedChar4 (          LedSegB + LedSegC                     + LedSegF + LedSegG)
#define LedChar5 (LedSegA           + LedSegC + LedSegD           + LedSegF + LedSegG)
#define LedChar6 (LedSegA           + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
#define LedChar7 (LedSegA + LedSegB + LedSegC										 )
#define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
#define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD           + LedSegF + LedSegG)
#define LedCharA (LedSegA + LedSegB + LedSegC           + LedSegE + LedSegF + LedSegG)
#define LedCharB (                    LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
#define LedCharC (LedSegA                     + LedSegD + LedSegE + LedSegF			 )
#define LedCharD (          LedSegB + LedSegC + LedSegD + LedSegE           + LedSegG)
#define LedCharE (LedSegA                     + LedSegD + LedSegE + LedSegF + LedSegG)
#define LedCharF (LedSegA                               + LedSegE + LedSegF + LedSegG)



class SystemObj {//系統類
public:
  SystemObj(void);
public:
//  inline 
  void SystemInit(void);
//  inline 
  void PllInit(void);
//  inline 
  void McBSP0Init(void);
//  inline 
  void McBSP1Init(void);
//  inline 
  void TIMER0Init(void);
//  inline 
  void TIMER1Init(void);
//  inline 
  void EintInit(void);
private:
  volatile unsigned int SystemRamTest;
public:
};

SystemObj::SystemObj(void)
{
  Disable();//關中斷
  SREG->IMR = 0x0000;//
  SREG->IFR = 0xffff;
//設置0x0080為中斷向量表首址,在第2個128頁內。
  SREG->PMST = (0x01 << PMST_IPTR) | (1 << PMST_MP_MC) | (1 << PMST_OVLY);
//  SREG->PMST |= (1 << PMST_DROM);//數據可const. 
/*---------------------------------------------------------------------------
若:設置0x0100為中斷向量表首址,在第3個128頁內。
則:*.cmd文件應該改為:
     PAGE 0: VECS: origin=0x0100,  length=0x66
則:
  SREG->PMST = (0x02 << PMST_IPTR) | (1 << PMST_MP_MC) | (1 << PMST_OVLY);
----------------------------------------------------------------------------*/
  SystemInit();//系統初始化
}

void SystemObj::SystemInit(void)
{
  PllInit();//PLL初始化
  McBSP0Init();
  McBSP1Init();
  TIMER0Init();
  TIMER1Init();
  EintInit();
  if (::SystemRamTest != 0x55aa) {
    ::SystemRamTest = 0x55aa;
  }
  if (SystemRamTest != 0x55aa) {
    SystemRamTest = 0x55aa;
  }
  IOXF = 0;
}

void SystemObj::PllInit(void)
{
volatile unsigned int start;
  SREG->SWWSR = 0x2000;
  do {
    SREG->CLKMD = 0;
    __nop(); 
  }
  while(SREG->CLKMD & (1 << CLKMD_PLLSTATUS));
  SREG->CLKMD = (9 << CLKMD_PLLMUL) | (30 << CLKMD_PLLCOUNT) | (1 << CLKMD_PLLONOFF) | (1 << CLKMD_PLLNDIV) | (1 << CLKMD_PLLSTATUS);//100M
//  SREG->CLKMD = (14 << CLKMD_PLLMUL) | (30 << CLKMD_PLLCOUNT) | (1 << CLKMD_PLLONOFF) | (1 << CLKMD_PLLNDIV) | (1 << CLKMD_PLLSTATUS);//150M
  for (start = 0; start < 10000; start ++);//等待外設上電復位正常結束
}

void SystemObj::McBSP0Init(void)
{
  McBSP0->SPSA = SPCR1;
  McBSP0->SPSD = 0;
  McBSP0->SPSD &= ~(1 << SPCR1_RRST);//禁止串口接收
  McBSP0->SPSA = SPCR2;
  McBSP0->SPSD = 0;
  McBSP0->SPSD &= ~(1 << SPCR2_XRST);//禁止串口發送
  McBSP0->SPSA = PCR;
  McBSP0->SPSD = (1 << PCR_XIOEN) | (1 << PCR_RIOEN);//設置收發為IO接口,DX輸出,DR,CLKS輸入
  McBSP0->SPSD |= (1 << PCR_FSXM) | (1 << PCR_CLKXM);//設置FSX,CLKX可做IO輸出
  McBSP0->SPSD |= (1 << PCR_FSRM) | (1 << PCR_CLKRM);//設置FSR,CLKR可做IO輸出
}

void SystemObj::McBSP1Init(void)//SPI配置
{
  McBSP1->SPSA = SPCR1;
  McBSP1->SPSD = 0;
//  McBSP1->SPSD &= ~(1 << SPCR1_RRST);//禁止串口接收
  __nop();
  __nop();
  McBSP1->SPSA = SPCR2;
  McBSP1->SPSD = 0;
//  McBSP1->SPSD &= ~(1 << SPCR2_XRST);//禁止串口發送
  __nop();
  __nop();
  McBSP1->SPSA = SPCR1;
  McBSP1->SPSD = (0x03 << SPCR1_CLKSTP);//CLKSTP=11b
  __nop();
  __nop();
  McBSP1->SPSA = PCR;
//  McBSP1->SPSD = (1 << PCR_FSXM) | (1 << PCR_CLKXM)\
//               | (1 << PCR_FSXP) | (1 << PCR_CLKXP);//CLKXP=1,SS=1
  McBSP1->SPSD = (1 << PCR_FSXM) | (1 << PCR_CLKXM)\
                 | (0 << PCR_FSXP) | (1 << PCR_CLKXP);//CLKXP=1,SS=0
  __nop();
  __nop();
  McBSP1->SPSA = SRGR1;
  McBSP1->SPSD = (0x07 << SRGR1_FWID) | (0x80 << SRGR1_CLKGDV);
  __nop();
  __nop();
  McBSP1->SPSA = SRGR2;
  McBSP1->SPSD = (1 << SRGR2_CLKSM);
  __nop();
  __nop();
  McBSP1->SPSA = RCR1;
  McBSP1->SPSD = (0x00 << RCR1_RFRLEN1);//8BIT
  __nop();
  __nop();
  McBSP1->SPSA = XCR1;
  McBSP1->SPSD = (0x00 << XCR1_RFRLEN1);//BIT
  __nop();
  __nop();
  McBSP1->SPSA = RCR2;
  McBSP1->SPSD = (0x01 << RCR2_RDATDLY);
  __nop();
  __nop();
  McBSP1->SPSA = XCR2;
  McBSP1->SPSD = (0x01 << XCR2_RDATDLY);
  __nop();
  __nop();
  McBSP1->SPSA = SPCR2;
  McBSP1->SPSD |= (1 << SPCR2_GRST) | (1 << SPCR2_XRST) | (1 << SPCR2_FRST);
  __nop();
  __nop();
}   

void SystemObj::TIMER0Init(void)
{
  TIMER0->TCR |= (1 << TCR_TSS);//關閉定時器0
  TIMER0->PRD = 60000;//設置定時周期
  TIMER0->TCR &= ~(1 << TCR_TSS);//啟動定時器0
  SREG->IMR |= (1 << IMR_TINT0);//允許TINT0中斷
}

void SystemObj::TIMER1Init(void)
{
  TIMER1->TCR |= (1 << TCR_TSS);//關閉定時器1
  TIMER1->PRD = 55000;//設置定時周期
  TIMER1->TCR &= ~(1 << TCR_TSS);//啟動定時器1
  SREG->IMR |= (1 << IMR_TINT1);//允許TINT1中斷
}

void SystemObj::EintInit(void)
{
  SREG->IMR |= (1 << IMR_INT0);//允許INT0中斷
  SREG->IMR |= (1 << IMR_INT1);//允許INT1中斷
  SREG->IMR |= (1 << IMR_INT2);//允許INT2中斷
  SREG->IMR |= (1 << IMR_INT3);//允許INT3中斷
}


class LedObj {//顯示類
public:
  LedObj(void);
  void LedInit(void);
  void LedDisplay(unsigned char);
};

LedObj::LedObj(void)
{
  LedInit();
}

void LedObj::LedInit(void)
{
  LedDisplay(0);
}

void LedObj::LedDisplay(unsigned char cData)
{
static const unsigned char LedTab[] =
{
  ~LedChar0,
  ~LedChar1,
  ~LedChar2,
  ~LedChar3,
  ~LedChar4,
  ~LedChar5,
  ~LedChar6,
  ~LedChar7,
  ~LedChar8,
  ~LedChar9,
  ~LedCharA,
  ~LedCharB,
  ~LedCharC,
  ~LedCharD,
  ~LedCharE,
  ~LedCharF
};

  cData = LedTab[cData & 0xff];
  McBSP1->DXR1 = cData & 0xff;
  __nop();
  __nop();

  McBSP1->SPSA = SPCR2;
  while((McBSP1->SPSD & (1 << SPCR2_XRDY)) == 0) {
    __nop();
    __nop();
  }
}

SystemObj Sys;
LedObj Led;

int main(void)
{
static int ledcount = 0;
  Enable();//開中斷
  while(1)
  {
    __nop();
//   SREG->ST1 ^= (1 << ST1_XF);
    __nop();

    if (::IOXF) {
      SREG->ST1 |= (1 << ST1_XF);
    }
    else {
      SREG->ST1 &= ~(1 << ST1_XF);
    }
//    Led.LedDisplay(ledcount & 1);
    ledcount ++;
    idle1();
  }
}

interrupt void Timer0Isr() {
static int count = 0;
static int ledcount = 0;
  count ++;
  if (count >= 4 * 250) {
    count = 0;
    ::IOXF = !::IOXF;//郁悶~~~中斷中ST1被保護~~~
    McBSP0->SPSA = PCR;
    McBSP0->SPSD ^= (1 << PCR_DX_STAT);//取反DX信號
//    McBSP0->SPSA = PCR;
    McBSP0->SPSD ^= (1 << PCR_CLKXP);//取反CLKX信號
//    McBSP0->SPSA = PCR;
    McBSP0->SPSD ^= (1 << PCR_FSXP);//取反FSX信號

//    McBSP0->SPSA = PCR;
    McBSP0->SPSD ^= (1 << PCR_CLKRP);//取反CLKR信號
//    McBSP0->SPSA = PCR;
    McBSP0->SPSD ^= (1 << PCR_FSRP);//取反FSR信號

    Led.LedDisplay(ledcount & 0x0f);
    ledcount ++;

/*
    McBSP1->SPSA = PCR;
    McBSP1->SPSD ^= (1 << PCR_DX_STAT);//取反DX信號
//    McBSP1->SPSA = PCR;
    McBSP1->SPSD ^= (1 << PCR_CLKXP);//取反CLKX信號
//    McBSP1->SPSA = PCR;
    McBSP1->SPSD ^= (1 << PCR_FSXP);//取反FSX信號


//    McBSP1->SPSA = PCR;
    McBSP1->SPSD ^= (1 << PCR_CLKRP);//取反CLKR信號
//    McBSP1->SPSA = PCR;
    McBSP1->SPSD ^= (1 << PCR_FSRP);//取反FSR信號
*/
  }
}

interrupt void Timer1Isr() {//只運行1次
  TIMER1->TCR |= (1 << TCR_TSS);//關閉啟動定時器1(自毀)
}

interrupt void Eint0Isr() {
//  McBSP1->SPSA = PCR;
//  McBSP1->SPSD |= (1 << PCR_DX_STAT);//設置DX信號
  SREG->IFR = (1 << IMR_INT0);//清除INT0中斷標志
}

interrupt void Eint1Isr() {
//  McBSP1->SPSA = PCR;
//  McBSP1->SPSD |= (1 << PCR_FSXP);//設置FSX信號
  SREG->IFR = (1 << IMR_INT1);//清除INT1中斷標志
}

interrupt void Eint2Isr() {
//  McBSP1->SPSA = PCR;
//  McBSP1->SPSD |= (1 << PCR_CLKXP);//設置CLKX信號
  SREG->IFR = (1 << IMR_INT2);//清除INT2中斷標志
}

interrupt void Eint3Isr() {
//  McBSP1->SPSA = PCR;
//  McBSP1->SPSD &= ~(1 << PCR_DX_STAT);//清除DX信號
//  McBSP1->SPSD &= ~(1 << PCR_FSXP);//清除FSX信號
//  McBSP1->SPSD &= ~(1 << PCR_CLKXP);//清除CLKX信號
  SREG->IFR = (1 << IMR_INT3);//清除INT3中斷標志
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91理论电影在线观看| 欧美精品一区二区三区蜜桃| 欧美一区二区播放| 国产精品久线在线观看| 麻豆高清免费国产一区| 91在线国产福利| 国产偷国产偷亚洲高清人白洁| 午夜伊人狠狠久久| 91免费在线看| 国产精品美女www爽爽爽| 极品美女销魂一区二区三区免费| 在线一区二区三区| 中文字幕综合网| 成人午夜精品一区二区三区| 精品欧美一区二区三区精品久久| 亚洲国产美国国产综合一区二区| 99久久国产综合精品色伊| 精品福利av导航| 麻豆高清免费国产一区| 在线播放国产精品二区一二区四区| 国产精品每日更新在线播放网址| 国产在线视频一区二区| 日韩精品在线看片z| 日本不卡1234视频| 91精品国产综合久久久久| 图片区小说区区亚洲影院| 欧美日韩国产天堂| 亚洲成人自拍网| 欧美裸体一区二区三区| 亚洲成av人片在线观看无码| 欧美日韩一区二区欧美激情| 亚洲成av人片在线观看| 91精品国产综合久久精品app| 午夜久久久久久久久久一区二区| 欧美三级日韩在线| 偷拍亚洲欧洲综合| 日韩片之四级片| 国产伦精一区二区三区| 国产日产欧美一区| av成人老司机| 亚洲国产一区二区在线播放| 678五月天丁香亚洲综合网| 图片区小说区区亚洲影院| 日韩午夜在线影院| 国产黄色精品网站| 亚洲色图20p| 777色狠狠一区二区三区| 美腿丝袜亚洲三区| 中文字幕第一页久久| 91香蕉视频在线| 亚洲成人在线观看视频| 亚洲精品一区二区精华| 国产成人av电影在线观看| 亚洲乱码国产乱码精品精的特点| 精品视频一区三区九区| 国内精品伊人久久久久av影院 | 欧美吻胸吃奶大尺度电影| 亚洲国产精品影院| 久久亚洲精华国产精华液 | 国产一区不卡视频| 国产精品视频看| 欧美日韩一区二区在线视频| 麻豆成人久久精品二区三区红| 亚洲国产岛国毛片在线| 欧美午夜精品理论片a级按摩| 激情综合一区二区三区| 亚洲精品综合在线| 精品免费国产二区三区| 日本久久电影网| 韩国午夜理伦三级不卡影院| 亚洲欧美日韩国产综合| 日韩美女一区二区三区| 91麻豆福利精品推荐| 久久精品国产亚洲一区二区三区| 亚洲人成网站色在线观看| 日韩视频在线你懂得| 91在线视频免费观看| 久久99精品一区二区三区| 亚洲乱码国产乱码精品精98午夜| 2023国产精品视频| 欧美日韩国产美| av中文一区二区三区| 久色婷婷小香蕉久久| 夜夜夜精品看看| 国产精品色噜噜| 精品国产伦理网| 欧美久久久影院| 日本道精品一区二区三区 | 在线视频亚洲一区| 国产精品一区在线| 日本强好片久久久久久aaa| 亚洲色图丝袜美腿| 国产精品天美传媒| 久久久久9999亚洲精品| 日韩一区二区在线看| 欧美日韩在线播放三区| 色婷婷久久99综合精品jk白丝 | 18欧美亚洲精品| 国产欧美日韩在线| 日韩欧美中文字幕精品| 欧美日产在线观看| 欧美色精品在线视频| 色8久久精品久久久久久蜜| 99视频热这里只有精品免费| 盗摄精品av一区二区三区| 国产乱人伦精品一区二区在线观看| 久久99热99| 精品无人码麻豆乱码1区2区 | 91免费小视频| 91网站在线播放| 99麻豆久久久国产精品免费 | 欧美xxxxx牲另类人与| 91麻豆精品国产91久久久久久久久| 欧美中文字幕一区| 欧美日韩高清在线| 欧美日韩成人激情| 日韩一区二区三区在线视频| 日韩亚洲欧美中文三级| 日韩欧美综合一区| 国产午夜亚洲精品午夜鲁丝片| 精品粉嫩超白一线天av| 国产欧美精品在线观看| 国产精品人成在线观看免费 | 亚洲欧洲性图库| 亚洲精品久久久久久国产精华液| 亚洲欧美激情小说另类| 亚洲综合久久久| 美国一区二区三区在线播放| 蜜桃视频一区二区| 国产伦精品一区二区三区免费 | 久久久久久电影| 1区2区3区欧美| 亚洲第一精品在线| 蜜臀久久99精品久久久画质超高清| 久久精品久久综合| 福利电影一区二区三区| 99r精品视频| 91精品欧美福利在线观看| 337p亚洲精品色噜噜狠狠| 亚洲精品在线一区二区| 国产精品久久免费看| 亚洲香肠在线观看| 国产精品中文字幕日韩精品 | 亚洲国产欧美一区二区三区丁香婷| 日本欧美在线看| 99久久精品免费精品国产| 欧美午夜精品久久久| 26uuu国产在线精品一区二区| 国产精品蜜臀av| 日韩vs国产vs欧美| 成人教育av在线| 正在播放一区二区| 亚洲欧美在线视频| 免费欧美日韩国产三级电影| 成人av电影观看| 日韩欧美一二三四区| 亚洲三级电影全部在线观看高清| 免费高清视频精品| 91亚洲精华国产精华精华液| 欧美一区二区精品在线| 国产精品国产三级国产aⅴ原创| 青青草一区二区三区| 91丨porny丨中文| 久久免费电影网| 日韩电影网1区2区| 91久久精品网| 成人免费在线播放视频| 国产一区不卡视频| 欧美一区二区三区视频在线| 亚洲日本在线视频观看| 国产九色精品成人porny| 在线电影院国产精品| 亚洲人成小说网站色在线| 成人听书哪个软件好| 久久色.com| 美女视频网站黄色亚洲| 欧美日韩和欧美的一区二区| 一区二区三区国产精华| 波多野洁衣一区| 国产欧美一区二区三区在线老狼| 麻豆免费看一区二区三区| 欧美撒尿777hd撒尿| 亚洲精品老司机| 色天天综合色天天久久| 国产精品欧美久久久久无广告| 精品系列免费在线观看| 欧美电影精品一区二区 | 亚洲二区在线观看| 日本高清成人免费播放| 亚洲欧洲精品天堂一级| av色综合久久天堂av综合| 国产欧美日韩精品a在线观看| 国产麻豆精品95视频| 2020国产精品| 国产高清不卡一区二区| 国产夜色精品一区二区av| 国产精品亚洲а∨天堂免在线| 久久丝袜美腿综合| 高清不卡在线观看av| 亚洲国产高清aⅴ视频|