C51单片机_day_01(定时器和中断系统)
c51单片机
51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片。
51是用c语言做为程序编程的语言
——我对基本基础硬件的了解
电阻: 降电流电压; 电容:就像蓄电池一样(但是只能蓄微弱的电量);
——最基本的一个公式
U= I R;
——电平(这是我了解的新的一个知道点)
电平分为高电平和低电平
高电平——3v和5v(单片机工作的电压)
低电平——0v
——只要有高低电平的差,才会有“工作”
——程序的编程(让一个小灯亮)
#include "reg52.h" //导入头文件 reg52.h
sbit led = P0^1; //定义一个 广角(端口),p0的1端口
void main() //主函数
{
led = 1;(或者是0;这是取决与单片机的设置) //给 端口 输出一个 高电平或者低电平;
} //小灯简单的点亮
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
让小灯闪烁的程序(非精确延时)
#include "reg52.h"
sbit P0^0;
void main()
{
unsigned int i = 0 ;//定义int 型的 i;它的值是 0~65535
while(1) //程序的死循环 单片机用得是非常多的
{
led = 1;
for(i=0;i<30000;i++); //一个非精确的延时
led = 0;
for(i=0;i<30000;i++)
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
精确的延时
如果想要使用精确延时,就必须先打延时的功能,它是c51内部的一个功
#include "reg52.h"
void main()
{
TH0 = 0XFC; //1秒的延迟高八位的初值
TL0 = 0x67; //低八位的初值
TR0 = 1; //定时器的开关
while(1)
{
if(TF0 = 1)
{
TF0 = 0;//溢出标志,溢出了就清0,
TH0 = 0xfc; //重新赋值
TL0 = 0x67;
cnt++; //cnt 记录溢出的次数
if(cnt >= 1000) // 溢出是 1毫秒;溢出一千次就是1秒
{
cnt = 0;
sec++; // sec ,记录了 溢出的多少秒
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
中断系统
这是非常重要的的一个知识点,利用一个函数
#include "reg52.h"
void Interrupt_Time0() interrupt 1 //中断的函数和别的函数有所不同,()后还要加 interrupt 和函数值 1 ←这个值不是随便取的,要看数据芯片;
{
static unsigned char i = 0;
static unsigneed int cnt = 0;
TH0 = 0xfc;
TL0 = 0x67;
cnt++;
if(cnt >= 1000)
{
cnt = 0;
flag_1s = 1;//等于一就会跳转到 flag_1s里;
}
switch(i)
{
caes 0:.....................................;break;
}
}
void main()
{
TMOD = 0x01; //表示打开定时器的 1 模式 ;
TH0 = 0xfc;
TL0 = 0x67;
TR0 = 1; //打开定时器 定时器的开关
EA = 1; //中断系统的总开关
ET0 = 1; //定时器0 的开关
while()
{
if(flag_1s ==1)
{
flag_1s = 0
sec++;
led_buff[0] = led_char[sec%]; //赋值
}
}
}
C51单片机_day_01(定时器和中断系统)的更多相关文章
- 打打基础,回头看看avr单片机的定时器、中断和PWM(转)
以前小看了定时器,发现这东西还真的很讲究,那先复习复习吧. 先提提中断:我的理解就是cpu执行时,遇到中断——根据对应的中断源(硬件或软件)——pc定位中断入口地址,然后根据这里的函数指针——跳转到相 ...
- MCS-51 单片机的中断系统
MCS-51 单片机的中断系统 MCS-51中断系统:5个中断源(两个外部中断, 两个定时器, 一个串口),2个优先级 中断相关概念 中断:当CPU正在处理某件事情时,单片机外部或内部发生的某一紧急事 ...
- 系统滴答定时器(SysTick)中断配置
系统滴答定时器(SysTick)中断配置 在STM32标准库中是通过SysTick_Config()函数配置时钟中断的,然后SysTick_Handler()函数自动定时触发其中的函数. if(Sys ...
- AVR单片机教程——定时器中断
本文隶属于AVR单片机教程系列. 中断,是单片机的精华. 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断.触发中断的事件成为中断源,处理事件的函数称为中断 ...
- C51单片机头文件和启动文件
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 <reg51.h> //特殊寄存器的字节地址和位地址,sfr定义字 ...
- 430单片机之定时器A功能的大致介绍
总的来说,430单片机一共有三个定时器,定时器A,定时器B,还有就是看门狗定时器,这里我们主要是讨论430单片机的定时器A的功能,定时器A的功能是我目前见过最厉害的定时器,视频上说用好定时器A的话,对 ...
- TMS320F28335项目开发记录9_28335中断系统
28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统. C28XX一共同拥有16个中断源,当中有2个不可屏蔽的中断RESET和NMI.定时器1和定时器2分别使用中断13和14.这样还 ...
- STM32的中断系统
STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断.并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图-3到6这个区域被标黑了, ...
- MCS-51单片机的定时器/计数器概念
一.MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计 ...
随机推荐
- mybatis源码解析之Configuration加载(五)
概述 前面几篇文章主要看了mybatis配置文件configuation.xml中<setting>,<environments>标签的加载,接下来看一下mapper标签的解析 ...
- Ubuntu16.04下安装OpenCV3.2.0
1.安装官方给的opencv依赖包 $ sudo apt-get install build-essential $ sudo apt-get install cmake git libgtk2.0- ...
- 慢阻肺疾病管理APP——第一次迭代心得
时光匆匆,不知不觉就到了第十二周.——第一次迭代都完成了,最终迭代还会远吗? 一.第一次迭代的设想和目标: 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ...
- web前端的前景
随着时代的发展,现在从事IT方向的人有很多,所以励志要成为前端开发工程师的人有很多.当然也有很多人在犹豫不知道该从事哪个方向,我今天就是来给大家分析一下Web前端开发的前景.包括工作内容,发展前景和薪 ...
- 提升算法——Adaboost
思路:通过改变训练样本权重,学习多个分类器,并将这些分类器进行线性组合,提高分类器性能.大多数提升方法都是改变训练数据的概率分布(数据的权值) 强可学习:存在一个多项式的学习算法能够学习他,并且正确率 ...
- 非关系统型数据库-mangodb
第三十六课 非关系统型数据库-mangodb 目录 二十四 mongodb介绍 二十五 mongodb安装 二十六 连接mongodb 二十七 mongodb用户管理 二十八 mongodb创建集合. ...
- 第八周学习笔记-ADO.Net中DataTable的应用
ADO.Net中DataTable的应用 一.知识点描述 1.概述:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表),是ADO.Net库中的核心对象. 2.DataTabl ...
- php websocket
php websocket项目开发,推荐使用:Workerman 本片内容使用Workerman实现了简单的及时聊天功能,具体代码如下: <?php // phpinfo(); header(' ...
- Vue源码之----为什么Vue中Array的pop,push等方法可以reactive,而Array[0]='a'这样的方法不会reactive?
这就要从reactive开始讲起了,粗略的说,js的操作能引起页面上显示的改变,是因为该操作引起了组件的重新渲染,渲染会生成新的虚拟节点,新节点和旧节点会对比,操作浏览器的node进行改变. vue实 ...
- python面向对象之继承/多态/封装
老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...