微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有大神会把51单片机的程序转成MSP430的么

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

时间:10-02 整理:3721RD 点击:
/*----------单片机中断定时小程序----------*/
/*----------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);           //循环
}


拜托了

该程序的功能:主要是有一个针头A输入高电平(大约3.0V左右)后,芯片检测到有高电平,则在另外的10个(源程序可能不满10个)针脚输出高电平(最好能闪烁输出),输出60秒后,
如果针脚A没有检测到高电平,则结束10个针脚的高电平(闪烁输出),进入等待状态。
如果针脚A检测到高电平,则继续让10个针脚输出高电平(闪烁输出)60秒。
源程序是51的程序,希望能改成MSP430 f5529的芯片程序,最好能标注出哪一个针脚输入高电平,哪10个针脚输出高电平

代做     1002925094                    

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top