有大神会把51单片机的程序转成MSP430的么

2019-07-15 19:51发布

/*----------单片机中断定时小程序----------*/
/*----------2014-05-07--------------------*/
/*----------STC12C5A16S2------------------*/

#include <intrins.h>
#include <STC12C5A.h>

/*---------------端口定义----------------*/
sbit TEST_OUT0 = P0^5;
sbit TEST_OUT1 = P0^4;
sbit TEST_OUT2 = P0^3;      //可以根据需要增加更多的端口

sbit SW = P3^2;

/*---------------常量定义----------------*/
#define    FOSC        29491200L //这个数值取决于所选用的晶振频率
#define    MODE1T                //定时器时钟模式1 声明则是12T模式,不声明是1T模式
#ifdef     MODE1T
#define    T1MS        (65536-FOSC/500000)//1T模式中10us定时器计数量
#else      
#define    T1MS        (65536-FOSC/12/500000)//12T模式中10us定时器计数量
#endif

/*---------------变量定义---------------*/
int       count = 100000;
int       n = 0;

/*---------------延时函数---------------*/
static void Delay(unsigned int s)
{
        unsigned int i;
        for(i=0;i<s;i++);
        for(i=0;i<s;i++);
}

/*---------------中断0------------------*/
void exint0() interrupt 0
{
        ET0 = 1;            //开启定时器0中断
        Delay(500);                //做延时
        if(SW == 0)
        {
                SW = 1;
                TEST_OUT0 = !TEST_OUT0;  //灯亮
                //TEST_OUT1 = !TEST_OUT1;
                n = 0;                   //计数值重设为0
        }
}

/*---------------Timer0中断-------------*/
void tm0_isr()interrupt 1 using 1
{
        TL0 = T1MS;
        TH0 = T1MS>>8;
        if(count-- == 0)       
   {   
      TEST_OUT0 = !TEST_OUT0;   //这里只写了一个端口的操作,根据需要可以自行增加
                //TEST_OUT1 = !TEST_OUT1;
                count = 100000;
        }
        n++;
        while(n == 60)         //是否满一分钟
        {
                n = 0;
                TEST_OUT0 = 0;      //灯灭
                //TEST_OUT1 = 0;
                TR0 = 0;            //定时器0停止运行
                ET0 = 0;           //关闭定时器0中断
        }
}
//---------------------------------

/*------------------主函数---------------------*/
void main()
{
        //TEST_OUT1 = 1;
        #ifdef MODE1T
                        AUXR = 0x80;        //定时器0工作在1T模式
        #endif
                        TMOD = 0x01;        //设置定时器0为模式1(16bit)
                        TL0 = T1MS;         //初始化定时器0低位
                        TH0 = T1MS>>8;      //初始化定时器0高位
                        TR0 = 1;             //定时器0开始运行       
                        EA = 1;             //开启全局中断开关
                        while(1);           //循环
}





拜托了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。