首页 > 其他分享 >智能车---stc8学习笔记1

智能车---stc8学习笔记1

时间:2023-09-07 13:11:06浏览次数:36  
标签:stc8 定时器 引脚 中断 笔记 --- -- 寄存器 单片机

采集状态,调整车身--控制电机,传感器获取偏差信息,根据控制逻辑实现电机驱动,采集决策

执行

 

 

电源电路,稳压电路,保护

时钟电路,给单片机提供时钟,心跳,而且确定了单片机工作的速度

复位电路,上电重启

 

 

 

 

串行是一串一串发送数据

定时器:很多事情不是来了才做,有一个周期

通道对应着引脚

 

 

周期短,频率高--10khz,有惯性的都能控制.pwm引脚外接电容,可以起到形成一条直线的作用

,频率非常高一半高一半低,滤成一条直线,输出2.5v.

Pca,可编程定时器(功能比较杂)--ccp

Dma自动数据存储

  1. 中断(重要)

 

 

Int0-4外部中断

T0-4定时器--定时器中断

Uart1-4---串口中断  就着三种要用

 

  1. 引脚,最基本的都是io功能,旁边/是通过复用实现(pwm1_2第一个通道的第二个选择)

1个引脚只能有一个功能,一个通道好像只能选一个.针对性用功能即可.

 

寄存器:规定好的小开关,举例pwm0如何选择引脚输出,假设两个小开关,产生四种变化.

00 10 01 11//p20-00,p21--01,p22--10,11全部输出,所以一个通道只能有一个输出,各种各样功能都是靠内部小开关实现,小开关通过程序写状态,写的东西叫寄存器,小开关装在寄存器里面

P7寄存器,控制p70-p77七个引脚的输出,写1输出5v,0是一v,人操作小开关作用各种电路实现功能,有些寄存器当成io输出,有些寄存器配置某些功能

程序->寄存器->电路->输出(效果),与或非操作不可位寻址的寄存器

一个寄存器八位

 

 

P3m0,p3m1控制p3^0的模式选择(准双向,输出(推挽模式),输入(高阻态模式),开漏模式.

上电默认输入模式.先变成准双向,然后再变成其他模式

 

 

 

寄存器封装成库函数,告诉函数想要哪个引脚变成哪个模式,调用即可,不可位寻址只能用与或非操作

 

 

 

硬件,分析传感器是啥,控制器是啥,执行装置是啥---(先分析电源,跟着电走)开关控制是否供电

二极管只允许电流往一端流(隔离作用).电机启动时候电流比较大.vcc电池电压可能会波动,为了避免波动,接电容(一个大一个小)起到滤波作用,电容看作蓄水池,大电容滤波动中低频,小电容滤高频.2脚输出,接二极管,电感,电容(组成lc电路滤波),经过这些小车上就会有5v的电输出.有了5v后就围绕单片机看(有了电源才能工作)

Ir接光电传感器(p0口功能比较弱)

P17接adc,把模拟信号的电压量转换为数字信号

P2输出pwm1-4,ina和inb控制电机正转反转,全桥驱动电路,给了pwm1正转,0不转,调速

3-5欧电阻--10khz,一百多欧--频率低点,记住永远有一路信号为0

 

 

S0接int0(优先级高),执行中断,可以打断当前程序执行另一个程序后返回,确认发车(优先级高)

1a2a1b2b测速电路,玩的都是pwm,速度有了位置和加速度就有了(d触发器,检测正反转时候相位不同,领先正转,落后反转,计数器数来的脉冲,外部中断电压跳变.

悬空时候单片机内置上下拉电阻

串口读超声波数据

Buzz功率放大电路,舵机需要一个0.5ms(-90度)-2.5ms(90度)的脉宽信号,总的周期为20ms(50hz),0.1秒60度

while(1)

    {

        delay(10);

        key_num<<=1;

        key_num+=KEY;

        if(key_num==0)//存储八十ms内我的按键状态 ,一直是稳定的0,按下去

        {

            LED=!LED;

            while(!KEY);

            

        }

按键轮询(无法实现别的功能,循环的时候程序动不了),如果要实现更多功能

单片机不建议把重要的程序写在大循环里,有另外一套重要的机制--中断机制

 

外部中断,当出现跳变沿时候,单片机能对其进行捕获并且产生一个中断.

定时器中断,计数器数到某个数时候,触发中断,执行某个程序,周期性的做某个事情可以用

串口中断:通信时候用的

 

 

It0是检测双边沿,it1是检测下降沿,检测后中断标志位ie0值1,有ea大门和ex0小门控制是否允许中断,px0控制优先级

按键按下触发,中断设置为下降沿

按下不管程序运行到哪,先跳出来运行中断程序,完成后回到现场

void INT0(void) interrupt 0;

(命名可以自定义) (中断号只有一个)

注意,按一下不是直接触发,而是把中断标志位ie0变1然后触发(允许控制)(触发后ie=0,如果又变成1,会再次触发中断)

 

定时器/计数器,周期性循环(写到while会一直执行).如果想让东西不受影响的运行,用定时器

定时器针对的是系统内部时钟送来的脉冲(24M太高,一般用分频,计数器针对单片机外部引脚的脉冲(例如判断按键按了多少下)

 

 自动重装载(做比较规律的事情),能一直数(完成后从我们给定的数接着开始),不可自动重装载,数完等程序告诉我们从哪个地方数

 

 TH0和TL0存储数据(16位计数器,装数RL_TH0,RL_TL0),数满后把TF0定时器中断标志位

置1,执行中断(触发完成后TF0硬件清零,回到RL_TH0之前记的数字,重新开始数)

定时器不建议用50us这样的计数,一般是10ms这样

小车进行重要决策一般是放在定时器里面,不重要的放在主循环(主要时间都在主循环)

 

标签:stc8,定时器,引脚,中断,笔记,---,--,寄存器,单片机
From: https://www.cnblogs.com/zhoncai45/p/17683794.html

相关文章

  • 王道408---OS---文件管理
    一、文件的数据结构文件目录项/FCB一个FCB就是一个文件目录项FCB的有序集合称为"文件目录"FCB实现了文件名和文件之间的映射。使用户(用户程序)可以实现“按名存取”。FCB主要记录⽤来记录⽂件的名字,索引节点指针以及其他⽬录项的层级关联关系索引节点(简称i结点inode)索引......
  • [论文阅读] Explicit Boundary Guided Semi-Push-Pull Contras
    ExplicitBoundaryGuidedSemi-Push-PullContrastiveLearningforSupervisedAnomalyDetectionIntroduction只关注正常样本可能会限制AD模型的可判别性。如图1(a)所示,在没有异常情况的情况下,决策边界通常是隐式的,没有足够的判别性。在无监督异常检测中,由于缺乏对异常的了解......
  • JavaNote03-流程控制语句
    0.流程控制语句流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。程序设计中规定的3种流程结构,即:顺序结构程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构根据条件,选择性地执行某段代码。有if…else和switch-......
  • crm--纯后端部署
    博客地址:https://www.cnblogs.com/zylyehuo/技术栈:supervisor+nginx+uwsgi+django+virtualenv+mariadb基本流程crm纯后端部署是通过模板语言进行和前端通信的,前端代码写在后端中<!--模板语言-->{{static.el}}配置后端,uwsgi+crm进行项目运行环境变量......
  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo
    前言  在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。 补充说明  本篇是基于《RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、......
  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-星际争霸
    (文章目录)前言1.awkawk是一种文本处理工具,可以用于对文本数据进行各种操作,例如分割、过滤、搜索、替换等。主要用途包括数据分析、文本搜索、日志处理等。awk命令的基本语法为:awk[选项参数]'模式1{操作1}模式2{操作2}...'文件名其中,模式用于匹配文件中的数据,操作则......
  • 无涯教程-JavaScript - BIN2DEC函数
    描述BIN2DEC函数将二进制数字转换为十进制。语法BIN2DEC(number)争论Argument描述Required/Optionalnumber您要转换的二进制数。Numbercannotcontainmorethan10characters(10bits).数字的最高有效位是符号位。其余的9位是幅度位。负数使用二进制补码表示......
  • 9-7|salt代码在linux机子那个目录
    如果你是通过包管理器(如`apt`,`yum`,`zypper`等)安装的SaltStack,那么代码和相关文件通常会分布在多个目录下。以下是一些常见的目录和它们的用途:1.**配置文件**: -`/etc/salt/minion`:salt-minion的主配置文件。 -`/etc/salt/master`:salt-master的主配置文件。2.......
  • 利用bobo-browse 实现lucene的分组统计功能
    bobo-browse是一用java写的lucene扩展组件,通过它可以很方便在lucene上实现分组统计功能。可以从http://code.google.com/p/bobo-browse/上下载和查看相关文档。下面介绍如何使用:第一步:设置相关配置文件bobo-browse使用了spring,这里主要配置bobo.spring和field.xml两个文件。可以......
  • pydantic学习与使用-15.校验邮箱格式EmailStr
    前言pydantic可以使用EmailStr校验邮箱格式环境准备EmailStr需按依赖包ImportError:email-validatorisnotinstalled,runpipinstallpydantic[email]pipinstallpydantic[email]校验邮箱格式frompydanticimportBaseModel,EmailStr,validatorfromtypingi......