專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

凌陽(yáng)SPCE061A十六位程序(通過(guò)硬件反復(fù)調(diào)試)

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年06月12日   【字體:

下面這些凌陽(yáng)SPCE061A十六位單片機(jī)的程序 都是我在開發(fā)板上通過(guò)硬件反復(fù)調(diào)試通過(guò)的,大家可隨便拿去用,有問(wèn)題可與我聯(lián)系哦,我在51hei的id是ikedge.
第一個(gè)能用的程序:
點(diǎn)亮IOA的低八位

 

//新建一個(gè)***.asm文件
.include hardware.inc;   //頭文件的格式
.PUBLIC _main            //全局
.code                    //定義在代碼段
_main:

r1=0x00FF
[P_IOA_Dir]=r1          //方向輸出
r1=0x0055           
[P_IOA_Buffer]=r1       //輸出
r1=0x00FF
[P_IOA_Attrib]=r1       //同向輸出

 

 

              用4HZ的中斷閃爍led           
 
.include hardware.inc;
.PUBLIC _main
.code
_main:

r1=0x00FF
[P_IOA_Dir]=r1
r1=0x0055
[P_IOA_Buffer]=r1
r1=0x00FF
[P_IOA_Attrib]=r1

INT IRQ
r3=0x0008
[P_INT_Ctrl]=r3  //打開IRQ5中斷

//r2=0x002D
//[P_TimerA_Ctrl]=r2    //選擇2Hz的中斷

.TEXT
.public _IRQ5
_IRQ5:
r4=0x00FF
[P_IOA_Dir]=r4
r4=0x00AA
[P_IOA_Buffer]=r4
r4=0x00FF
[P_IOA_Attrib]=r4
RETI;


                 經(jīng)過(guò)修改的十六位控制八位流水燈
.include hardware.inc;
.PUBLIC _main
//.PUBLIC _loop
.code
_main:

//  r1=0x00FF
// [P_IOA_Dir]=r1
// r1=0x0055
// [P_IOA_Buffer]=r1
// r1=0x00FF
// [P_IOA_Attrib]=r1
 r4=0x0001
 INT IRQ          //打開中斷開關(guān)
 r3=0x1000
 [P_INT_Ctrl]=r3  //打開IRQ1對(duì)應(yīng)的timerA的中斷
 
 r2=0x0034
 [P_TimerA_Ctrl]=r2   //選擇4096Hz頻率自加溢出的中斷
 //r2=0xf000          //1second
 r2=0xfe57      //0.1second
 //r2=0xe000   //2second
 //r2=0xf800   //0.5second
 //r2=0xfffe
 [P_TimerA_Data]=r2    //置初值f800/634Loop
    
    _loop: 
 r5 = 0x0001
    [P_Watchdog_Clear] = r5
    goto _loop

.TEXT
.public _IRQ1
_IRQ1:

r1=0x00FF
[P_IOA_Dir]=r1
r1=0x00FF
[P_IOA_Attrib]=r1

r4=r4 LSL 1
r4=r4&0x00ff
CMP r4 ,0x0000
jz _loop1
jmp _loop2
_loop1:
r4=0x0001
_loop2:
[P_IOA_Data]=r4

r1=0x1000
[P_INT_Clear]=r1
//r5 = 0x0001
 //   [P_Watchdog_Clear] = r5
RETI;
                使用系統(tǒng)時(shí)鐘計(jì)數(shù)的流水燈
.include hardware.inc;
.PUBLIC _main
//.PUBLIC _loop
.code
_main:

//  r1=0x00FF
// [P_IOA_Dir]=r1
// r1=0x0055
// [P_IOA_Buffer]=r1
// r1=0x00FF
// [P_IOA_Attrib]=r1
 //r1=0x0073 //fosc頻率是40.96M  CPU頻率是fosc/8
 //r1=0x0033 //fosc頻率是20.48M  CPU頻率是fosc/8
 r1=0x0013 //fosc頻率是24.576M  CPU頻率是fosc/8
 //r1=0x0063 //fosc頻率是32.768M  CPU頻率是fosc/8
 //r1=0x00f3 //fosc頻率是49.152M  CPU頻率是fosc/8
 //r1=0x00f0 //fosc頻率是49.152M  CPU頻率是fosc
 [P_SystemClock]=r1
 r4=0x0001
 INT IRQ          //打開中斷開關(guān)
 r3=0x1000
 [P_INT_Ctrl]=r3  //打開IRQ1對(duì)應(yīng)的timerA的中斷
 
 r2=0x0031            //選擇fosc/256的頻率自加
 [P_TimerA_Ctrl]=r2   //選擇4096Hz頻率自加溢出的中斷
 //r2=0xf000          //1second
 //r2=0xfe57      //0.1second
 //r2=0xe000   //2second
 //r2=0xf800   //0.5second
  r2=0x0000
 [P_TimerA_Data]=r2    //置初值f800/634Loop
    
    _loop: 
 r5 = 0x0001
    [P_Watchdog_Clear] = r5
    goto _loop

.TEXT
.public _IRQ1
_IRQ1:

r1=0x00FF
[P_IOA_Dir]=r1
r1=0x00FF
[P_IOA_Attrib]=r1

r4=r4 LSL 1
r4=r4&0x00ff
CMP r4 ,0x0000
jz _loop1
jmp _loop2
_loop1:
r4=0x0001
_loop2:
[P_IOA_Data]=r4

r1=0x1000
[P_INT_Clear]=r1
//r5 = 0x0001
 //   [P_Watchdog_Clear] = r5
RETI;

 

 

 

                  IOB08作為PWM輸出
.include hardware.inc;
.PUBLIC _main
//.PUBLIC _loop
.code
_main:

  r1=0xFFFF
 [P_IOB_Dir]=r1
 r1=0xFFFF
 [P_IOB_Attrib]=r1
 r1=0x0000
 [P_IOA_Buffer]=r1
 //r1=0x0073 //fosc頻率是40.96M  CPU頻率是fosc/8
 //r1=0x0033 //fosc頻率是20.48M  CPU頻率是fosc/8
 r1=0x0013 //fosc頻率是24.576M  CPU頻率是fosc/8
 //r1=0x0063 //fosc頻率是32.768M  CPU頻率是fosc/8
 //r1=0x00f3 //fosc頻率是49.152M  CPU頻率是fosc/8
 //r1=0x00f0 //fosc頻率是49.152M  CPU頻率是fosc
 [P_SystemClock]=r1
 r4=0x0001
 INT IRQ          //打開中斷開關(guān)
 r3=0x1000
 [P_INT_Ctrl]=r3  //打開IRQ1對(duì)應(yīng)的timerA的中斷
 
 r2=0x0071            //選擇fosc/256的頻率自加
 [P_TimerA_Ctrl]=r2   //選擇4096Hz頻率自加溢出的中斷
 //r2=0xf000          //1second
 //r2=0xfe57      //0.1second
 //r2=0xe000   //2second
 //r2=0xf800   //0.5second
  r2=0xfff0
 [P_TimerA_Data]=r2    //置初值f800/634Loop
    
    _loop: 
 r5 = 0x0001
    [P_Watchdog_Clear] = r5
    goto _loop

.TEXT
.public _IRQ1
_IRQ1:

r1=0x00FF
[P_IOA_Dir]=r1
r1=0x00FF
[P_IOA_Attrib]=r1

r4=r4 LSL 1
r4=r4&0x00ff
CMP r4 ,0x0000
jz _loop1
jmp _loop2
_loop1:
r4=0x0001
_loop2:
[P_IOA_Data]=r4

r1=0x1000
[P_INT_Clear]=r1
//r5 = 0x0001
 //   [P_Watchdog_Clear] = r5
RETI;

 

 

//  工程名稱:ADC_LINE.scs
//  功能描述:   通過(guò)改變LINE_IN端口的模擬電壓來(lái)改變IOB口輸出的數(shù)據(jù),
//        采用自動(dòng)方式即定時(shí)器A溢出執(zhí)行ADC轉(zhuǎn)換,可以通過(guò)發(fā)光
//        二極管的點(diǎn)亮了解轉(zhuǎn)換的數(shù)據(jù)值。
//  硬件連接:IOB口的高8位連接發(fā)光二極管  

 

//============================================================
// 文件名稱:ADC_LINE.asm   
// 實(shí)現(xiàn)功能: 通過(guò)改變LINE_IN端口的模擬電壓來(lái)改變IOB口輸出的數(shù)據(jù),
//        采用自動(dòng)方式即定時(shí)器A溢出執(zhí)行ADC轉(zhuǎn)換,可以通過(guò)發(fā)光
//        二極管的點(diǎn)亮了解轉(zhuǎn)換的數(shù)據(jù)值。
//============================================================


.DEFINE  P_IOB_DATA       0x7005 
.DEFINE  P_IOB_DIR        0x7007 
.DEFINE  P_IOB_ATTRI   0x7008 
.DEFINE  P_INT_Ctrl      0x7010 
.DEFINE  P_INT_CLEAR   0x7011 
.DEFINE  P_ADC_Ctrl      0x7015 
.DEFINE  P_ADC_MUX_Ctrl  0x702b 
.DEFINE  P_ADC_MUX_DATA  0x702C
.DEFINE  P_DAC_Ctrl      0x702A 
.DEFINE     P_WATCHDOG_CLEAR    0x7012
.CODE

//============================================================= 
// 函數(shù)名稱:  _main
// 功能描述: 通過(guò)改變LINE_IN端口的模擬電壓來(lái)改變IOB口輸出的數(shù)據(jù),
//        采用自動(dòng)方式即定時(shí)器A溢出執(zhí)行ADC轉(zhuǎn)換,可以通過(guò)發(fā)光
//        二極管的點(diǎn)亮了解轉(zhuǎn)換的數(shù)據(jù)值。
// 語(yǔ)法格式:  _main
//入口參數(shù):     無(wú)
// 出口參數(shù):    無(wú)
// 注意事項(xiàng):    僅為用戶模型
//=================================================================
.PUBLIC _main
_main:  
    r1 = 0xffff 
 [P_IOB_ATTRI] = r1           //IOB口設(shè)置為同相輸出口
 [P_IOB_DIR] = r1 
 r1 = 0x0000
 [P_IOB_DATA] = r1;
 
    r1 = 0x0001                  //選擇通道LINE_IN為IOA4
 [P_ADC_MUX_Ctrl] = r1
    r1 = 0x0001                  //允許A/D轉(zhuǎn)換
    [P_ADC_Ctrl] = r1    
    
L_AD:   
    r1 = [P_ADC_MUX_Ctrl]        //讀寄存器[P_ADC_MUX_Ctrl]的B15位
    test r1,0x8000               //判斷是否轉(zhuǎn)換完畢
    jz L_AD                      //否,繼續(xù)轉(zhuǎn)換
    r1 = [P_ADC_MUX_DATA]        //是,則讀出[P_ADC_MUX_DATA]轉(zhuǎn)換結(jié)果
    [P_IOB_DATA] = r1            //同時(shí)觸發(fā)A/D重新轉(zhuǎn)換
    r1 = 0x0001
    [P_WATCHDOG_CLEAR] = r1      //清看門狗
    jmp L_AD;
    
 


            用C語(yǔ)言編的第一個(gè)程序
#include "hardware.h"
int main()                           
{
 unsigned int i, j=0;
 for (i=0;i<=100;i++) 
 j = j + i;       //G_Su保存果

 
 while(1)                     //程序結(jié)束循環(huán)
 {
         unsigned int ClearWatchdog =0x7012;
  ClearWatchdog = 0x0001; //清看門狗
 }
}

                       包括IOA口初始化子函數(shù)

#include "hardware.h"
#define Port_IOA_Data    0x7000        //portA data
#define Port_IOA_Buffer         0x7001        //portA buffer
#define Port_IOA_Dir            0x7002       //portAdirection
#define Port_IOA_Attrib         0x7003 

unsigned int 
_Port_IOA_Attrib ,
_Port_IOA_Dir,
_Port_IOA_Data,
_Port_IOA_Buffer;

int main()                           
     {

 IOA_Init(); 
     
             
 while(1)                            //程序結(jié)束循環(huán)
  {
  unsigned int ClearWatchdog = 0x7012;
  ClearWatchdog = 0x0001; //清看門狗
  }
 }
 
void IOA_Init()   //IOA口初始化
{

//===============================
_Port_IOA_Dir=0xFFF;
_Port_IOA_Attrib=0xFFFF;
_Port_IOA_Buffer=0xFFFF;
_Port_IOA_Data=0xFFFF;
}

                 真正意義上能用的顯示程序顯示6789。
unsigned int 
* _Port_IOA_Attrib=0x7003,
* _Port_IOA_Dir=0x7002,
* _Port_IOA_Data=0x7000,
* _Port_IOA_Buffer=0x7001,
* ClearWatchdog = 0x7012;

void IOA_Init()   //IOA口初始化
{


* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}
int main()                           
 {   IOA_Init();
     while(1)                            //程序結(jié)束循環(huán)
  {
     /* _Port_IOA_Data=0x7000;
        * _Port_IOA_Buffer=0x7001;
  * _Port_IOA_Dir=0x7002;
  * _Port_IOA_Attrib=0x7003;*/
     * _Port_IOA_Data=0xfe6f;
     
     * _Port_IOA_Data=0xfd7f;
    
     * _Port_IOA_Data=0xfb07;
     
     * _Port_IOA_Data=0xf77d;
    
     //[0~9]=[3f,06]
      //0x3f,0x06,0x5b,0x4f,
        // 0x66,0x6d,0x7d,
        // 0x07,0x7f,0x6f
             
 
  
  ClearWatchdog = 0x0001; //清看門狗
  }
 }
 
void F_Delay()
{
 unsigned int i;
 for(i=0; i<500; i++)
 {
 } 
}


             顯示任意數(shù)字temp待改進(jìn)
unsigned int 
* _Port_IOA_Attrib=0x7003,
* _Port_IOA_Dir=0x7002,
* _Port_IOA_Data=0x7000,
* _Port_IOA_Buffer=0x7001,
* ClearWatchdog = 0x7012;
unsigned char code_table[]=
 {
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,
 0x07,0x7f,0x6f
 };
void IOA_Init()   //IOA口初始化
{


* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}
int main()                           
 {   IOA_Init();
     while(1)                            //程序結(jié)束循環(huán)
  {
     /* _Port_IOA_Data=0x7000;
        * _Port_IOA_Buffer=0x7001;
  * _Port_IOA_Dir=0x7002;
  * _Port_IOA_Attrib=0x7003;*/
     unsigned int aa,dd,ge,shi,bai,temp;
     //bb=0x0002;
       temp=981;
    bai=temp/100;
    shi=temp%100;
    shi=shi/10;
    ge=temp%10;
  
  aa=0xfe00;
  dd=aa + code_table[ge];
     * _Port_IOA_Data= dd;
     
     aa=0xfd00;
     dd=aa + code_table[shi];
     * _Port_IOA_Data= dd;
     aa=0xfb00;
     dd=aa + code_table[bai];
     * _Port_IOA_Data= dd;
     //* _Port_IOA_Data=0xfd7f;
    
     //* _Port_IOA_Data=0xfb07;
     
     //* _Port_IOA_Data=0xf77d;
    
     //[0~9]=[3f,06]
      //0x3f,0x06,0x5b,0x4f,
        // 0x66,0x6d,0x7d,
        // 0x07,0x7f,0x6f
             
 

 

 

 

                  C語(yǔ)言的中斷函數(shù)IRQ5
#include "hardware.h"
unsigned int 
* _Port_IOA_Attrib=0x7008,  /////////
* _Port_IOA_Dir=0x7007,     /////////地址賦值
* _Port_IOA_Data=0x7005,    /////////
* _Port_IOA_Buffer=0x7006,  /////////
* ClearWatchdog = 0x7012,   /////////
* P_INT_Ctrl=0x7010,        /////////
* P_INT_Clear=0x7011,       /////////
bb;
int aa;
void IOA_Init()             /////////IOA口初始化
{

* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   
  IOA_Init();
  __asm("IRQ ON");      //打開總中斷
  
  aa=0x0001;
  * P_INT_Ctrl=0x0008;  //打開4Hz的中斷
  while(1)              //程序結(jié)束循環(huán)
  {
  
  
     
     * ClearWatchdog = 0x0001; //清看門狗
  }
 }
void IRQ5(void) __attribute__ ((ISR)); //中斷專用格式
void IRQ5(void)                         //中斷專用格式
{    
aa=aa+1;
* _Port_IOA_Data= aa;
* P_INT_Clear = 0x0008;                //清中斷 

}

void F_Delay()
{
 unsigned int i;
 for(i=0; i<500; i++)
 {
 } 
}


                         C語(yǔ)言的流水燈
#include "hardware.h"
unsigned int 
* _Port_IOA_Attrib=0x7008,
* _Port_IOA_Dir=0x7007,
* _Port_IOA_Data=0x7005,
* _Port_IOA_Buffer=0x7006,
* ClearWatchdog = 0x7012,
* P_INT_Ctrl=0x7010,
* P_INT_Clear=0x7011,
bb,aa;

void IOA_Init()   //IOA口初始化
{

* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   
  IOA_Init();
  __asm("IRQ ON");
  //INT_FIQ_IRQ();
  aa=0x0001;
  * P_INT_Ctrl=0x0008;
  while(1)                            //程序結(jié)束循環(huán)
  {
  
  
     
     * ClearWatchdog = 0x0001; //清看門狗
  }
 }
void IRQ5(void) __attribute__ ((ISR)); 
void IRQ5(void)
{ * ClearWatchdog = 0x0001;  
aa=aa<<1;                         //循環(huán)左移
//bb=aa;
//bb=bb && 0x0100; 

while(aa==0x0100)
aa=0x0001;
bb=aa;                            //異或 取反
bb=bb^0xffff;
* _Port_IOA_Data= bb;
* P_INT_Clear = 0x0008; 

}


                 C語(yǔ)言用timea做計(jì)數(shù)的流水燈
#include "hardware.h"
unsigned int 
* _Port_IOA_Attrib=0x7008,
* _Port_IOA_Dir=0x7007,
* _Port_IOA_Data=0x7005,
* _Port_IOA_Buffer=0x7006,
* ClearWatchdog = 0x7012,
* P_INT_Ctrl=0x7010,
* P_INT_Clear=0x7011,
* P_TimerA_Ctrl=0x700B,
* P_TimerA_Data=0x700A,
bb,aa;

void IOA_Init()   //IOA口初始化
{

* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   
  IOA_Init();
  __asm("IRQ ON");
  //INT_FIQ_IRQ();
  aa=0x0001;
  * P_INT_Ctrl=0x1000;    //設(shè)置中斷
  * P_TimerA_Ctrl=0x0034;
  * P_TimerA_Data=0xfe57;//設(shè)置計(jì)數(shù)初值
  while(1)               //程序結(jié)束循環(huán)
  {
  
  
     
     * ClearWatchdog = 0x0001; //清看門狗
  }
 }
void IRQ1(void) __attribute__ ((ISR)); 
void IRQ1(void)
{ * ClearWatchdog = 0x0001;  
aa=aa<<1;
//bb=aa;
//bb=bb && 0x0100; 

while(aa==0x0100)
aa=0x0001;
bb=aa;
bb=bb^0xffff;
* _Port_IOA_Data= bb;
* P_INT_Clear = 0x1000; 

}


           C語(yǔ)言的系統(tǒng)頻率控制的流水燈
#include "hardware.h"
unsigned int 
* _Port_IOA_Attrib=0x7008,
* _Port_IOA_Dir=0x7007,
* _Port_IOA_Data=0x7005,
* _Port_IOA_Buffer=0x7006,
* ClearWatchdog = 0x7012,
* P_INT_Ctrl=0x7010,
* P_INT_Clear=0x7011,
* P_TimerA_Ctrl=0x700B,
* P_TimerA_Data=0x700A,
* P_SystemClock=0x7013,
bb,aa;

void IOA_Init()   //IOA口初始化
{

* _Port_IOA_Dir=0xFFFF;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   * P_SystemClock=0x0033;
  IOA_Init();
  __asm("IRQ ON");
  //INT_FIQ_IRQ();
  aa=0x0001;
  * P_INT_Ctrl=0x1000;    //設(shè)置中斷
  * P_TimerA_Ctrl=0x0031;
  * P_TimerA_Data=0x0000;//設(shè)置計(jì)數(shù)初值
  while(1)               //程序結(jié)束循環(huán)
  {
  
  
     
     * ClearWatchdog = 0x0001; //清看門狗
  }
 }
void IRQ1(void) __attribute__ ((ISR)); 
void IRQ1(void)
{ * ClearWatchdog = 0x0001;  
aa=aa<<1;
//bb=aa;
//bb=bb && 0x0100; 

while(aa==0x0100)
aa=0x0001;
bb=aa;
bb=bb^0xffff;
* _Port_IOA_Data= bb;
* P_INT_Clear = 0x1000; 

}



#include "hardware.h"
unsigned int 
* _Port_IOA_Attrib=0x7008,
* _Port_IOA_Dir=0x7007,
* _Port_IOA_Data=0x7005,
* _Port_IOA_Buffer=0x7006,
* ClearWatchdog = 0x7012,
* P_INT_Ctrl=0x7010,
* P_INT_Clear=0x7011,
* P_TimerA_Ctrl=0x700B,
* P_TimerA_Data=0x700A,
* P_SystemClock=0x7013,
* P_ADC_Ctrl=0x7015,
* P_ADC_MUX_Ctrl=0x702b,
* P_ADC_MUX_Date=0x702c,
bb,aa;

void IOA_Init()   //IOA口初始化
{

* _Port_IOA_Dir=0x0000;
* _Port_IOA_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   
 
   
  
  * P_ADC_Ctrl=0x0001;
  * P_ADC_MUX_Ctrl=0x0001;
 
 
  * P_SystemClock=0x0033;
  IOA_Init();
  __asm("IRQ ON");
  //INT_FIQ_IRQ();
  aa=0x0001;
  * P_INT_Ctrl=0x1000;    //設(shè)置中斷
  * P_TimerA_Ctrl=0x0031;
  * P_TimerA_Data=0x0f00;//設(shè)置計(jì)數(shù)初值
  while(1)               //程序結(jié)束循環(huán)
  {
  
  
     
     * ClearWatchdog = 0x0001; //清看門狗
  }
 }
void IRQ1(void) __attribute__ ((ISR)); 
void IRQ1(void)
{ 
bb=* P_ADC_MUX_Date; 
while(P_ADC_MUX_Date=0x8000);

* _Port_IOA_Data= bb;
* P_INT_Clear = 0x1000; 

}


   C語(yǔ)言編的AD轉(zhuǎn)換


//#include "hardware.h"
unsigned int 
* _Port_IOB_Attrib=0x7008,
* _Port_IOB_Dir=0x7007,
* _Port_IOB_Data=0x7005,
* _Port_IOB_Buffer=0x7006,
* _Port_IOA_Attrib=0x7004,
* _Port_IOA_Dir=0x7003,
* _Port_IOA_Data=0x7000,
* _Port_IOA_Buffer=0x7001,
* ClearWatchdog = 0x7012,
* P_INT_Ctrl=0x7010,
* P_INT_Clear=0x7011,
* P_TimerA_Ctrl=0x700B,
* P_TimerA_Data=0x700A,
* P_SystemClock=0x7013,
* _P_ADC_Ctrl=0x7015,
* _P_ADC_MUX_Ctrl=0x702b,
* _P_ADC_MUX_Data=0x702c,
bb,aa;
int main()                           
 {   
 
* _Port_IOB_Attrib= 0xffff;//IOB口設(shè)置為同相輸出口 
* _Port_IOB_Dir=0xffff;


* _Port_IOA_Attrib= 0xffff;//IOA口設(shè)置為xuanfushi 口 
* _Port_IOA_Dir=0x0000;


* _P_ADC_MUX_Ctrl=0x0001;    //sheIOA0weiADshuru
* _P_ADC_Ctrl=0x0001;        //開啟AD轉(zhuǎn)換
while(1)
{ 
aa=* _P_ADC_MUX_Ctrl;
aa=aa & 0x8000;
while(aa!=0x8000);


bb =* _P_ADC_MUX_Data;
* _Port_IOB_Data=bb;
* ClearWatchdog = 0x0001; //清看門狗
}

 }
                 C語(yǔ)言編的數(shù)字電壓表0~3.3V精確到0.001V
unsigned int 
* _Port_IOB_Attrib=0x7008,
* _Port_IOB_Dir=0x7007,
* _Port_IOB_Data=0x7005,
* _Port_IOB_Buffer=0x7006,
* _Port_IOA_Attrib=0x7004,
* _Port_IOA_Dir=0x7003,
* _Port_IOA_Data=0x7000,
* _Port_IOA_Buffer=0x7001,
* _ClearWatchdog = 0x7012,
* _P_INT_Ctrl=0x7010,
* _P_INT_Clear=0x7011,
* _P_TimerA_Ctrl=0x700B,
* _P_TimerA_Data=0x700A,
* _P_SystemClock=0x7013,
* _P_ADC_Ctrl=0x7015,
* _P_ADC_MUX_Ctrl=0x702b,
* _P_ADC_MUX_Data=0x702c,
bb,aa
,dd,ge,shi,bai,qian,temp;
float qq;
unsigned char code_table[]=
 {
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,
 0x07,0x3f,0x6f
 };
void IOA_Init()   //IOA口初始化
{


* _Port_IOB_Dir=0xFFFF;
* _Port_IOB_Attrib=0xFFFF;
//_Port_IOA_Buffer=0xFFFF;
//_Port_IOA_Data=0xFFFF;
}

int main()                           
 {   
  __asm("IRQ ON");
  * _P_INT_Ctrl=0x4000;
  IOA_Init();
     * _Port_IOA_Attrib= 0xffff;//IOA口設(shè)置為xuanfushi 口 
  * _Port_IOA_Dir=0x0000;
     * _P_ADC_MUX_Ctrl=0x0001;    //sheIOA0weiADshuru
  * _P_ADC_Ctrl=0x0001;        //開啟AD轉(zhuǎn)換
     while(1)                            //程序結(jié)束循
  {
  aa=* _P_ADC_MUX_Ctrl;
  aa=aa & 0x8000;
  while(aa!=0x8000);
  temp=* _P_ADC_MUX_Data;
  
  qq=19.859090;
  temp=temp/qq;
  qian=temp/1000;
    bai=temp%1000/100;
    shi=temp%100/10;
     ge=temp%10;
        * _ClearWatchdog = 0x0001; //清看門狗
  }
}             
void IRQ0(void) __attribute__ ((ISR)); 
void IRQ0(void) 
 {  
  aa=0xfe00;
  dd=aa + code_table[ge];
     * _Port_IOB_Data= dd;
     
     aa=0xfd00;
     dd=aa + code_table[shi];
     * _Port_IOB_Data= dd;
     aa=0xfb00;
     dd=aa + code_table[bai];
     * _Port_IOB_Data= dd;
  * _P_INT_Clear = 0x4000;
  
  aa=0xf700;
  dd=aa + code_table[qian];
     * _Port_IOB_Data= dd;
 }
 

 

關(guān)閉窗口

相關(guān)文章