• 大小: 107KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: 其他
  • 标签: stc15  

资源简介

轻咬前端按键电机启动,工作30秒后自动停止。中途轻咬按键0.5秒可以主动关闭。仅供参考,代码不是很健壮,各位同学有什么修改意见可以提出来

资源截图

代码片段和文件信息

	  
/*--------桂林电子科技大学科技楼------------------*/
/*-----------215联合实验室出品 ------------------*/
#define  MAIN_Fosc 11095200 //22118400L //定义主时钟

#include “STC15Fxxxx.H“


int count = 0; //用于开关计时
bit flag = 0; //用于判断是否归零30s的延时

void  delay_ms(u16 ms);

void Timer0Init(void) //5毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
TF0 = 0; //清除TF0标志
ET0 = 1;  // 使能定时器中断
// TR0 = 1; //定时器0开始计时
}
/******************** 主函数 **************************/
void main(void)
{
int i ;
P0M1 = 0; P0M0 = 0; //设置为准双向口
P1M1 = 0; P1M0 = 0; //设置为准双向口
P2M1 = 0; P2M0 = 0; //设置为准双向口
P3M1 = 0; P3M0 = 0; //设置为准双向口
P4M1 = 0; P4M0 = 0; //设置为准双向口
P5M1 = 0; P5M0 = 0; //设置为准双向口
P6M1 = 0; P6M0 = 0; //设置为准双向口
P7M1 = 0; P7M0 = 0; //设置为准双向口

    P1M1 &= 0x00;
    P1M0 |= 0xff;
P1 = 0x00;

Timer0Init();   //定时器0初始化函数

IE1  = 0; //外中断1标志位
EX1 = 1; //INT1 Enable
IT1 = 1; //INT1 下降沿中断
EA = 1; //允许总中断


PCON = 0x02;            //MCU进入掉电模式
    _nop_();                //掉电模式被唤醒后首先执行此语句然后再进入中断服务程序
    _nop_();

    while(1){
             // flag = 0 ;
              if(flag != 1){
              for(i=625;i>0;i--)
     {
    P14 = 1;
    delay_ms(4);
if( flag == 1){
   P14 = 0;
   break;
   }
P14 = 0;
delay_ms(4);
if( flag == 1){
   P14 = 0;
   break;
   }
}
}
  
  if( flag != 1 ){
      P14 = 1;
      delay_ms(25000);  //延时30s
  }
  count = 0;
  P14 = 0;
  PCON = 0x02;            //MCU进入掉电模式
              _nop_();                //掉电模式被唤醒后首先执行此语句然后再进入中断服务程序
              _nop_();
}
}
//========================================================================
// 函数: void  delay_ms(u16  ms)
// 描述: 延时函数。
// 参数: ms要延时的ms数,自动适应主时钟.
// 返回: none.
// 版本: VER3.0
// 日期: 2018-5-1
// 备注:yu_fy 
//========================================================================
void  delay_ms(u16 ms)
{
     u16 i;
 flag = 0;
 do{
      i = MAIN_Fosc / 13000;
  while(--i) ;   //14T per loop
  if(flag == 1)
     ms = 1;
     }while(--ms);
}
void INT1_int (void) interrupt INT1_VECTOR //进中断时已经清除标志
{
TR0 = 1;
flag = 0;
}
void Timer0(void) interrupt TIMER0_VECTOR    //定时器0中断
{
    EA = 0;
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
count++;
if(count == 100){
   TR0 = 0;
   count = 0;
//    flag = 0;
   if(P33 != 1){
      P14 = 0;
  flag = 1;
  }
   }
EA = 1;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       52706  2018-04-28 16:11  B02原理图.pdf
     目录           0  2018-08-04 19:28  电动牙刷\
     文件       40493  2018-08-04 18:54  电动牙刷\e_toothbrush_demo
     文件        2893  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.c
     文件        1227  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.hex
     文件          66  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.lnp
     文件        7057  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.LST
     文件        9202  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.M51
     文件       41110  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.OBJ
     文件        2060  2018-08-04 18:54  电动牙刷\e_toothbrush_demo.plg
     文件       60440  2018-08-04 19:28  电动牙刷\e_toothbrush_demo.uvopt
     文件       13295  2018-05-07 01:56  电动牙刷\e_toothbrush_demo.uvproj
     文件       60440  2018-06-18 13:49  电动牙刷\e_toothbrush_demo_uvopt.bak
     文件       13467  2018-05-04 09:46  电动牙刷\e_toothbrush_demo_uvproj.bak
     文件        5240  2018-05-04 00:28  电动牙刷\STARTUP.A51
     文件       12027  2018-05-05 23:05  电动牙刷\STARTUP.LST
     文件         749  2018-05-05 23:05  电动牙刷\STARTUP.OBJ
     文件       52586  2018-05-06 10:50  电动牙刷\STC15Fxxxx.H

评论

共有 条评论