资源简介
轻咬前端按键电机启动,工作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
- 上一篇:VHDL16位乘法器
- 下一篇:hadoop3.0.0以上版本的winutil
相关资源
- STC15系列驱动LCD_12864
- stc15系列读GY_25角度
- STC15系列读DS18B20程序,12Mhz时钟晶振
- GPS STC15程序,51程序
- STC15W204产生40KHZ方波
- AD批量生产PCB-STC15F2K60S2 + QN8025+M62429
- STC15+AHT10温湿度传感器+LCD12864.rar
- BC28+51单片机的原理图
- stc15w408as串口通讯
- STC15系列工控程序带485通讯+Modbus协议
- MY1690-12P MP3解码模块应用程序含驱动程
- 循迹小车基于STC15W201S LM339制作
- STC15/STC15F2K60S2/STC15W4K32S4系列读取超声
- STC15F2K60S2串口通信程序
- STC15F2K60S2读取DHT11温湿度传感器数据串
- STC15F2K60S2 iic 驱动程序
- STC15W-408AS_EEPROM与串口通信
- 基于stc15f2k61s2的dht11+oled实时监测的单
- STC15/STC15F2K60S2/STC15W4K32S4系列读取MPU
- STC 1T 8脚 单片机 STC15F104E 红外解码 遥
- AD7895 ±10V ADC采样代码STC15
- 电动牙刷无线充电底座stc15
- STC15系列驱动AD7705
- STC15系列头文件
- STC15F2K60S2 头文件
- STC15 Modbus从站代码
- stc15w4k系列曾强型PWM,可直接用于商用
- 基于STC15单片机的精确电阻测量AD原理
- STC15控制舵机
- STC15W4K系列单片机,串口4接收数据,
评论
共有 条评论