×
单片机 > 单片机程序设计 > 详情

单片机模板程序(c)

发布时间:2020-05-26 发布时间:
|

以下程序择晶振为12MHz


时钟i周期为晶振的倒数,位1/f(晶振),机器周期为时钟周期的12分频,即为12*1/f(晶振),故12MHz的机器周期为1us


定时器1/0


/******************************************************************************/


#include           //头文件调用,写程序时都要加上,

#define uint unsigned int  //宏定义,为了后面定义变量书写简便

#define uchar unsigned char


uchar mm=0;                    //全局变量

uchar flag_get=0;            //定义标志位,为1则灯亮

/****************************************************************************/

/*                  名称:延时函数                                                               */

/*                  功能:C语言中常用的for循环延时方法                     */

/*                            延时长短可以通过变量初值来改变                   */

/****************************************************************************/

void Delay1ms(uint count)

{

 uint i,j;

 for(i=0;i

 for(j=0;j<110;j++);

}

/****************************************************************************/

/*                  名称:主函数                                                                   */

/*                  功能:利用定时器1每隔1秒使P1口LED灯全亮       */

/****************************************************************************/

void main()

{

 TMOD=0x10;                                 //设置T1工作于定时方式1(有16位计数)

 TH1=(65536-50000)/256;              //定时器1赋初值,是TH1而不是TH0噢(若要设置是定时器0的话,把1改为0,下同);计数了50000次,即为50ms

 TL1=(65536-50000)%256;

 EA=1;                                          //开总中断

 ET1=1;                                        //开定时器1中断

 TR1=1;                                       //开始计数

 while(1)

 {

   if(flag_get==1)

    {

        P1=0x00;

    Delay1ms(200);

    flag_get=0;

    }

    else  P1=0xff;

 }

}

/****************************************************************************/

/*                  名称:定时器1中断                                                         */

/*                  功能:通过定时1秒产生中断使标志位置1                */

/****************************************************************************/

void timer1() interrupt 3     //注意了,这里是3,为定时器1的标号,若改为1的话则为定时器0,要区别于基于TMOD控制的工作方式和中断向量入口地址

{

  mm++;

  TH1=(65536-50000)/256;

  TL1=(65536-50000)%256;

  if(mm==20)

  {

      mm=0;

      flag_get=1; 

  }

}



外部中断1/0


#include            //头文件调用,写程序时都要加上,

#define uint unsigned int    //宏定义,为了后面定义变量书写简便

#define uchar unsigned char


Init()


{


  EX0 = 1;   //打开外部中断(若要设置外部中断1的话,把0改为1,下同)


  IT0 = 1;   //设置外部中断的脉冲触发方式


  EA = 1;   //开总中断


}


void main (void)


{


  Init();


  while(1)


  {


   //you want。。。


  }


}


void exter0(void) interrupt 0     //0位外部中断0的的标号,2为外部中断2的标号


{


  //you want。。。


}



关键字:单片机  模板程序  c 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式