当前位置: 首页 > wzjs >正文

做网站开发 用的最多的语言百度推广入口官网

做网站开发 用的最多的语言,百度推广入口官网,社交手机网站开发,站点推广是什么意思源代码 如上图将7个文放在Keli5 中即可,然后烧录在单片机中就行了 烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频: 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?…

 源代码

如上图将7个文放在Keli5 中即可,然后烧录在单片机中就行了

烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频:

【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?p=2&vd_source=ada7b122ae16cc583b4add52ad89fd5e

源代码:

头文件要记得宏定义和重定义,避免重复调用:

#ifndef _Timer0_h_//名字根据文件名定义即可
#define _Timer0_h_//声明函数……#endif

 main.c

#include <STC89C5xRC.H>
#include <INTRINS.H>
#include "Timer0.h"
#include "Key.h"//调用头文件unsigned char KeyNum,LEDMode;//定义全局变量KeyNum(获取按键的值),LEDMode(切换流水灯流向)
void main()
{P2=0xFE;//初始化灯P20=0,1111 1110(就是让01灯亮)Timer0_Init();//初始化定时器/计时器while(1){KeyNum=Key();//获取按键值if(KeyNum){if(KeyNum==1){LEDMode++;//切换流水灯模式if(LEDMode>=2)LEDMode=0;}}}
}
//中断程序函数void Timer0_Routine() interrupt 1
{static unsigned int T0Count;//局部静态变量TL0 = 0x66;		//设置定时初值TH0 = 0xFC;		//设置定时初值T0Count++;if(T0Count>=1000){T0Count=0;if(LEDMode==0)P2=_crol_(P2,1);//左移函数,P2每秒左移动一次if(LEDMode==1)P2=_cror_(P2,1);//右移函数,P2每秒右移动一次}
}

Timer0.c

#include <STC89C5xRC.H>//void Timer0_Init()
//{
//	TF0=0;TR0=1;//TCON,寄存器
//	//TMOD=0x01;//0000 0001,寄存器
//	TMOD=TMOD&0xF0;//把TMOD的低四位清零,高四位不变,方便使用两个定时器
//	TMOD=TMOD&0x01;//把TMOD的最低位置1,高四位不变,方便使用两个定时器
//	TH0=64535/256;//高电位,寄存器,1毫秒
//	TL0=64535%256;//低电位,寄存器,1毫秒
//	ET0=1;EA=1;PT0=0;//打开中断开关
//	
//}
//定时器0初始化函数
void Timer0_Init()		//1毫秒@11.0592MHz
{
//	AUXR &= 0x7F;		//定时器时钟12T模式TMOD &= 0xF0;		//设置定时器模式TMOD |= 0x01;		//设置定时器模式TL0 = 0x66;		//设置定时初值TH0 = 0xFC;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时ET0=1;//允许中断EA=1;//允许总中断PT0=0;//低优先级
}中断程序函数
//中断函数模版
//void Timer0_Routine() interrupt 1
//{
//	static unsigned int T0Count;
//	TL0 = 0x66;		//设置定时初值
//	TH0 = 0xFC;		//设置定时初值
//	T0Count++;
//	if(T0Count>=1000){
//		T0Count=0;
//		P20=~P20;
//	}
//}

Timer0.h

#ifndef _Timer0_h_
#define _Timer0_h_void Timer0_Init();#endif

Key.c

#include <STC89C5xRC.H>
#include "Delay.h"unsigned char Key()//获取独立按键
{unsigned char KeyNumber=0;//进行判断是否摁下按键和防抖操作if(P31==0){Delay(20);while(P31==0);Delay(20);KeyNumber=1;}if(P30==0){Delay(20);while(P30==0);Delay(20);KeyNumber=2;}if(P32==0){Delay(20);while(P32==0);Delay(20);KeyNumber=3;}if(P33==0){Delay(20);while(P33==0);Delay(20);KeyNumber=4;}return KeyNumber;
}

 Key.h

#ifndef _Key_h_
#define _Key_h_unsigned char Key();#endif

Delay.c 

//Delay.c#include <STC89C5xRC.H>
#include <INTRINS.H>//延时函数
void Delay(unsigned int xms)		//@11.0592MHz
{unsigned char i, j;while(xms){i = 2;j = 199;do{while (--j);} while (--i);xms--;}
}

 Delay.h

//Delay.h#ifndef __Delay_H__
#define __Delay_H__//延时函数头文件
void Delay(unsigned int xms);
#endif

 代码解析与教程:

main.c
  • 注释解释很清楚,重点来讲解一下中断函数中的左移右移函数
    他们哥俩是依赖头文件<INTRINS.H>的库函数

    会用即可,这是char类型的,里面也有其他类型的,参数一是要移动的数,参数二是移动的位数。
    例如:0000 0001使用左移函数_crol_左移一位就是0000 0010,其他同理,因此,加上中断函数,灯就会每秒移动一次
 Dealy模块
  • 包含源代码与头文件,不需要知道怎么实现的会用即可,后续使用,直接将头文件和源代码拿过来用即可;

xms是定义的毫秒,1000毫秒就是1秒;模版生成的是1毫秒的,因此xms等于1000
 Timer0模块
  • 包含源代码与头文件,需要知道怎么实现,会用
  • 51单片机的定时器和计数器十分重要,要理解怎么用,要知道原理是什么,要结合原理图来分析怎么做,先看代码
#include <STC89C5xRC.H>//void Timer0_Init()
//{
//	TF0=0;TR0=1;//TCON,寄存器
//	//TMOD=0x01;//0000 0001,寄存器
//	TMOD=TMOD&0xF0;//把TMOD的低四位清零,高四位不变,方便使用两个定时器
//	TMOD=TMOD&0x01;//把TMOD的最低位置1,高四位不变,方便使用两个定时器
//	TH0=64535/256;//高电位,寄存器,1毫秒
//	TL0=64535%256;//低电位,寄存器,1毫秒
//	ET0=1;EA=1;PT0=0;//打开中断开关
//	
//}
//定时器0初始化函数
void Timer0_Init()		//1毫秒@11.0592MHz
{
//	AUXR &= 0x7F;		//定时器时钟12T模式TMOD &= 0xF0;		//设置定时器模式TMOD |= 0x01;		//设置定时器模式TL0 = 0x66;		//设置定时初值TH0 = 0xFC;		//设置定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时ET0=1;//允许中断EA=1;//允许总中断PT0=0;//低优先级
}中断程序函数
//中断函数模版
//void Timer0_Routine() interrupt 1
//{
//	static unsigned int T0Count;
//	TL0 = 0x66;		//设置定时初值
//	TH0 = 0xFC;		//设置定时初值
//	T0Count++;
//	if(T0Count>=1000){
//		T0Count=0;
//		//下面是代码区
//	}
//}
  • 最上面注释掉的代码是要求理解的;中间的代码是STC-ISP软件生成的;最下面的代码是中断函数模版,拿到main.c中可直接使用,但是也要了解原理:

大家可以这个博客深度理解定时器计数器和中断,这个是教程博客:(51单片机)计时器时钟(C语言代码编撰)(定时器/中断器、计数器教程)(51单片机重点)-CSDN博客

 Key模块
  • 包含源代码与头文件,不需要知道怎么实现的会用即可,后续使用,直接将头文件和源代码拿过来用即可;

    序号1是按键的防抖操作,不需要理解,有按键的地方直接用即可
    序号2是独立按键控制变量。
    KeyNumber就是返回值,按键K1就返回1,其他同理

 独立按键教程、LED教程

 由于单片机系列版本不一样,单片机核心控制可能会有不同,例如:有些单片机的LED的L1是P21,有些就是P2_1,需要看单片机核心,或者头文件:

 可以看到我的STC89C52RC是P21;

独立按键 
  • 先看原理图:
     

    可以看到控制K1的是P31,同理K2是P30,按键都是高电位,因此只要将P31设置成0,就是按键通电,相当于激活
 LED教程
  • 先看原理图:

    LED是高电位,设定为0就是通电
  • P2就是16进制的LED灯总控制,如:0xFF=1111 1111,就是全关,例如代码中的:
    P2=0xFE,就是1111 1110,就是L1亮,左移一位就是1111 1101,就是L2亮,其他同理,配合中断函数,就可以每秒移动一次

效果视频: 

(51单片机)按键控制流水灯移位

 注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

http://www.dtcms.com/wzjs/275715.html

相关文章:

  • 表格网站怎么做的什么是整合营销概念
  • 旅游网站怎样做宣传网站维护收费标准
  • 网站vip怎么做cilimao磁力猫
  • 温州 建网站的公司百度推广手机版
  • 建设银行的网站是多少钱免费域名申请网站
  • 公司建设网站费用如何入帐微信广告投放收费标准
  • 西安哪家公司做的网站好aso推广公司
  • 毕业设计静态网站建设选题依据成都网站快速排名提升
  • 郑州市城乡建设委员会官方网站正规seo多少钱
  • 上海平台网站建设公产品网络营销
  • 做网站想注册商标是哪一类怎么自己搭建网站
  • 游戏 网站 模板网络营销是干什么的
  • 免费php源码网郑州百度seo排名公司
  • 青岛做企业网站媒体网络推广价格优惠
  • wordpress 密码修改seo常用工具
  • 正规的徐州网站建设天津百度分公司
  • 北京网站优化托管南宁网站seo排名优化
  • 建设食品网站公司网站优化
  • 网站建设怎么解析域名济南网站建设公司选济南网络
  • 毕节市网站建设网络推广的方法有哪些
  • 律师网站建设建议bt最佳磁力搜索引擎
  • 建设银行宁波招聘网站陕西优化疫情防控措施
  • 服装网站开发方案象山关键词seo排名
  • 在家做网站维护兼职刚刚中国宣布重大消息
  • 新郑网站建设网盘资源大全
  • 淘宝网页设计网站谷歌seo营销
  • 淮南市住房城乡建设委员会网站武汉百度推广公司
  • 自己做免费网站难吗seo优化培训机构
  • 做一家拍卖网站需要什么资质键词优化排名
  • 一个完整的企业策划案范文优化落实防控措施