资源简介
轻咬前端按键电机启动,工作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
相关资源
- IAP15f2k61s2
- 测试STC15W408AS单片机串口收发
- 3_STC15F2K60S2仿真操作
- stc15f104 单片机实现EEPROM的读写复制测
- 白光烙铁_V3.3.3.rar
- 单片机电子万年历设计
- 基于12864显示温度及报警系统.rar
- STC15F2K60S2-AD资料
- STC15F2K60S2单片机例程集合
- STC15F2K60S2最小系统板原理图
- STC15电子钟跑秒简易电压测量12864显示
- STC15W4K56S4-STC MCU
- [单片微机原理与接口技术——基于
- STC15W104 STC15系列 单片机 例程、原理
- 基于STC15W204S的高低电平时间检测串口
- STC15W4K56S4最小系统板
- IAP15W4K58S4 官网例程、器件资料、原理
- STC15F2K60S2中文资料
- 单片机STC15F2K60S2中文手册
- STC15W系列手册
- stc15单片机串口和模拟spi控制adf4360-
- STC15单片机实战指南(带书签含原理图
- STC15F2K60S2系列单片机中文使用手册
- STC12C5A60S2例程、原理图
- STC15W资料包.zip STC15W4K58S4 例程 手册
- 单片微机原理与接口技术_基于STC15W
- [单片微机原理与接口技术——基于
- ADS1256+STC15L408AD模块资源
- STC15F2K60S2读取DS18B20温度
- STC15W4K56S4开发板资料V2
评论
共有 条评论