网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月18日漏签0天
单片机吧 关注:213,086贴子:1,050,648
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 2回复贴,共1页
<<返回单片机吧
>0< 加载中...

那位大师帮修改一下这程序

  • 只看楼主
  • 收藏

  • 回复
  • 我的神啊深圳
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在已经实现的长按运行与关闭,短按转换运行其中一程程序,但想多加一种进去。
SRM( )这个,,,,
处于运行中,短按SRH,SRM,SRL(),循环执行。
#include "stc15w.h"
#include <intrins.H> //函数运算头文件
#define uint unsigned int //宏定义变量0-6553
#define uchar unsigned char //宏定义变量0-255
#define MAIN_Fosc 11059200L //定义主时钟
#define key_S 80 //宏定义短按(约20ms)
#define key_L key_S*50 //宏定义长按(约1s)
/*定义ADC参数*/
#define ADC_POWER 0x80 //ADC power control dit (宏定义ADC电源控制位)1000 0000
#define ADC_FLAG 0x10 //ADC complete flag (宏定义ADC完成标志位) 0001 0000
#define ADC_START 0x08 //ADC start control dit (宏定义ADC启动控制位)0000 1000
#define ADC_SPEEDLL 0x00 //420 clocks (宏定义420时钟)速度控制 0000 0000
#define ADC_SPEEDL 0x20 //280 clocks (宏定义280时钟)速度控制 0001 0000
#define ADC_SPEEDH 0x40 //140 clocks (宏定义140时钟)速度控制 0010 0000
#define ADC_SPEEDHH 0x60 //070 clocks (宏定义70时钟)速度控制 0011 0000
/*定义接口*/
sbit out=P1^1; //驱动端口定义
sbit key = P2^4; //定义KEY接口
sbit ledL = P4^2; //定义低档位接口
sbit ledH = P4^3; //定义高档位接口
void InitADC(); //初始化ADC子程序声明
uchar zhADC(uchar ch); //ADC 转换子程序声明
void delayms(uint k); //1ms延时子程序声明
void SRH(); //执行AD转换结果子程序声明H
void SRM(); //执行AD转换结果子程序声明M
void SRL(); //执行AD转换结果子程序声明L
uint Cnt250us=0,Cnt1s; //定时变量
bit ON=0; //开关位变量
bit HL=0; //高低温位变量
/*接口模式初始化*/
void port_mode()
{
P1M1 = 0x01; //P1.0高阻 P1.1强推挽:0000 0001 ADC输入高阻、继电器强上拉
P1M0 = 0x02; //P1.0高阻 P1.1强推挽:0000 0010 ADC输入高阻、继电器强上拉
P2M0 = 0x00; //P2 P4灯和按键端口模式, 准双向口0x00
P2M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
out=0; //驱动初始化0
}


  • 我的神啊深圳
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void readkey(void) //按键读取函数
{
static uint count=0; //计数变量
if(!key)
{
count++;
if(count==key_L) //长按
ON=~ON; //开关机选择
if(count>key_L) //防止count溢出
count=key_L+1;
}
else //按键抬起
{
if(count>key_S && count<key_L)//短按
{
if(ON==1) //开机状态有效
HL=~HL; //高低温选择
}
count=0; //count清0
}
}
/*----------------------------
初始化ADC
-----------------------------*/
void InitADC()
{
P1ASF=0x01; //设置P1.0端口作为模拟输入
ADC_RES=0; //清除以前的结果
ADC_CONTR=ADC_POWER|ADC_SPEEDHH; //开启ACD电源、设置转换速度420
delayms(1); //上电延时
}
/*----------------------------
获取ADC结果
-----------------------------*/
uchar zhADC(uchar ch) //zhADC(获取ADC结果)
{
ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ch|ADC_START; //启动转换
_nop_(); //4个时钟延时
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR & ADC_FLAG)); //等待完成标志
ADC_CONTR &=~ADC_FLAG; //Close ADC(关闭ADC)
return ADC_RES; //返回ADC结果
}
/*----------------------------
1ms延时子程序(12M晶振)
-----------------------------*/
void delayms(uint k)
{
uint i,j;
for(i=k;i>0;i--)
for(j=747;j>0;j--);
}
/*----------------------------
执行ADC转换结果子程序SRH_高档 SRM_中档 SRL_低档
-----------------------------*/
/*高档控制*/
void SRH()
{
uchar M;
M=0x22; //高
if(zhADC(0)>=M) //如果ADC_1通道检测值大于等于M
out=1; //驱动输出1
else
out=0; //否则驱动输出0
}
/*中档控制*/
void SRM()
{
uchar M;
M=0x28; //中
if(zhADC(0)>=M) //如果ADC_1通道检测值大于等于M
out=1; //驱动输出1
else
out=0; //否则驱动输出0
}
/*低档控制*/
void SRL()
{
uchar M;
M=0x30; //低
if(zhADC(0)>=M) //如果ADC_1通道检测值大于等于M
out=1; //驱动输出1
else
out=0; //否则驱动输出0
}
void Timer0Init() //250微秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x33; //设置定时初值
TH0 = 0xF5; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}


2026-01-18 10:06:10
广告
不感兴趣
开通SVIP免广告
  • 我的神啊深圳
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void main() //主函数
{
port_mode(); //初始化IO口
InitADC(); //初始化ADC SFR
Timer0Init();//初始化定时器
while(1)
{
if(TF0==1)//查询周期250us
{
TF0=0;
readkey();//读按键
if(ON==1)
{
Cnt250us++;
if(Cnt250us>=4000)
{
Cnt250us=0;
Cnt1s++;
if(Cnt1s>=3600)
{
Cnt1s =0;
ON=0;
ledH = 1;
ledL = 1;
out = 0;
}
}
if(HL==1)
{
ledH = 0;
ledL = 1;
SRH();
}
else
{
ledH = 1;
ledL = 0;
SRL();
}
}
else
{
Cnt250us=0;
Cnt1s= 0;
ledH = 1;
ledL = 1;
out = 0;
}
}
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回单片机吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示