寻找51单片机程序出现警告大神,出现了38个警告,全都来自一个.h文件,本科毕业设计求解,被折磨一天了


      单片机程序出现警告就是一个小嘚计算机不过他没有计算机那么好,方便的输入输出设备计算机的输入设备就是鼠标,键盘等方便的很,输出设备就是显示器将輸出非常清晰的显示在屏幕上。但是单片机程序出现警告的输入输出都是他的引脚需要通过编程控制。

   1.电源 2.晶振 3.复位电路  没有电源就没囿能源就不能工作;没有晶振,就没有时钟电路就没有节拍,指令就不能按一定的步调运行;没有复位电路单片机程序出现警告就佷不可靠,会出现“死机”、“程序走飞(PC)”等现象

    1. 我们对单片机程序出现警告编程不过就是设置单片机程序出现警告内部的寄存器囷端口引脚以便输出高低电平控制其他(连接在单片机程序出现警告上)器件而已。

    2. 编程中最重要的是1:配置时钟2:配置IO口,3:配置复位方式看门狗设置等等

 7.  读端口信号是必须先向端口写“1”,然后再读这就是单片机程序出现警告口信号的准双向的含义。切记!
 8. 模拟輸入或数字I/O推挽(强)或漏极开路输出(IO,inout)

9. 一些寄存器默认设置即可配置了可能会有警告。usb clock.clksel=1

假设C单片机程序出现警告的晶振是Hz测烸秒计个数 经过12分频后,每秒计=1842900个数如果设置计数器初值是 0xfe90(即十进制65165),则需要计的数的个数为=360那么定时器的

 
 

51单片机程序出现警告是高电平复位,低电平正常工作
上电瞬间以及按下按键(电容相当于导线)RST为高电平。
按键按下的瞬间会产生大电流冲击會局部产生较大的电磁干扰。为了减小这种干扰加一个一个限流电阻。

RAM就是平时存储变量的比如你定义了一个什么bit、uint8、 uint16 、uint32等等这些都是在RAM中定义的。
512B的RAM虽然名字一样但是在物理结构以及用法是有区别的。
沿袭老8051单片机程序出现警告的叫法依旧叫为片内RAM和片外RAM。所谓的片内和片外是指芯片内部和芯片外部但是现在的单片机程序出现警告的芯片拓展基本上都在内部,不存在什么片外拓展RAM但昰我们仍依旧这么叫,知道这回事就行了

片内RAM分为 data、idata一般我们直接定义的变量都是直接在data里面的,data是直接寻址的是速度最快的。而其怹都是通过寄存器间接寻址的其速度当然不可同日而语。
而idata范围是从片内的0x80~0xFF也是128B但是它同时不用来存储变量当然也不希望程序能访问箌这里,它主要的用途就是用来中断与函数的调用

片外RAM分为pdata、xdata如上所述,均是通过寄存器来间接寻址的
xdata的寻址范围是片尾的0x0000~0xFFFF共64K。寻址范围最广如要使用还得专门配置两个字节寄存器DPTRH和DPTRL,寻址范围的广也就意味着速度是最慢的。

所以呢总结一下就是:一般变量存储茬data区域,当data不够了在去寻xdata区域,idata不要触碰pdata不到万不得已也不要!!!

看似高字节拓展的128RAM是和寄存器的地址相重叠,但是物理上并不重疊

用途主要有:驱动和控制两个
三极管的特性:截止、饱和、放大
(在数电中主要用到的是三极管的开关作用,用到的是截止囷饱和特性(有一个β因数)而在模电当中用到的是则是它的放大特性)

④按字节编码寻址以及按字编碼寻址

对了,除此之外还要注意一个东西就是MB和M的区别
MB是一个容量单位,兆字节
而M是一个数量单位兆

LED压降为2V,工作电流1~20mA**一般在1~5,mA之内的變化可以直接体现在灯的亮程度超过5mA就没那么明显了所以选取的串联电阻可以选**150欧~3K

⑤三八译码器快速记住对应的,其实左边三个可以看荿二进制是几对应的右边哪一位就是0

IO口有四种状态,准双向开漏,强推挽高阻

应用最多的得数准双向和开漏了,两者的主要区别就昰开漏内部是没有上上拉电阻的51单片机程序出现警告的P0默认就是开漏,而其他口均是准双向IO对于P0在自己DIY小电路的时候切记不要忘了加外蔀加上拉电阻!
对于准双向IO要特别注意:51单片机程序出现警告的一个重要知识准双向IO口如果要正确读取外部信号的状态,首先必须保证洎己是高电平

上拉电阻的主要应用场合有:
需要增大电流输出时加一个上拉相当于并联一个电阻。
也能起到限流作用如5V转12V系统
抵抗EMI(電磁干扰)

sbit用于定义单字节可位寻址对象的某位,“单字节可位寻址”包括可位寻址特殊功能寄存器和RAM中可位寻址区的16个字节

bata 关键字可將变量定位到内部的RAM的可位寻址。

⑧ 有关IO口拉成高电平的总结

通常我们会遇到在普通的准双向IO口下出现IO口拉不到高电平的情况。这个时候怎么办呢
尝试所有的IO口状态,有的比较特殊比如IO口外接上上拉电阻,必须开漏才能拉成高电平
单片机程序出现警告是否速度过快,可以适当延时。

1、DC+:接电源正极(电压按继电器要求有5V.9V.12V和24V选择)
2、DC-:接电源负极
3、IN:可以高或低电平控制继电器吸合
1、NO: 继电器常開接口,继电器吸合前悬空吸合后与COM短接
2、COM:继电器公用接口
3、NC: 继电器常闭接口,继电器吸合前与COM短接吸合后悬空

高低电平触发*选擇端:*

1.跳线与LOW短接时为低电平触发;

2.跳线与high短接时为高电平触发。

简而言之就是。平面面向自己以后三个脚分别是GND、VOUT和VCC

DHT11 是一款含有已校准单总线数字信号输出的温湿度复合传感器,它包括一个电阻式感湿
元件和一个 NTC 测温元件并与一个高性能 8 位单片机程序出现警告相连接。DHT11 是属于民用型器件测量
值仅精确到个位,即小数点后无数据如果要使用于工业产品或更精确的应用,建议使用 DHT21

注意的是那个NA或者NC引腳表示是空引脚。

作为一个大三老狗才开始单片机程序出现警告入门,晚是晚了点但是由于知识体系比大一大二稍加完善,所以看問题也相对于更加全面所以写下学习笔记作为分享,当然知识水平有限,希望大神们能够给出修改意见

学习参考书:51单片机程序出現警告C语言教程(郭天祥)

  1. 单片机程序出现警告就是指的一块集成芯片,上面集成了微处理器、存储器及各种输入/输出接口

  2. 通过控制单片机程序出现警告的40个引脚输出的高低电平进行控制,最后达到控制内外资源的运行的目的因为其中为一些晶体管,可以通过控制晶体管的導通状态而组成不同的逻辑电路达到不同功能。

  3. 单片机程序出现警告的标号及代表意义:

STC–前缀表示芯片的生产公司
8–表示芯片为8051内核
C–该器件为CMOS器件
2–芯片内部的存储空间,1=4KB 2=8KB……
40–芯片外部晶振最高可接入40MHz
C–商业级 (0~70℃)

注意:四组I/O口的区别和常见用法
P3每一个引脚都囿第二功能!

在我们想将编写的C程序放在单片机程序出现警告上执行需要几个步骤:
3):烧录程序到单片机程序出现警告
在其中的第二步需偠安装keil软件
在其中的第三步,不仅需要STC-ISP烧录软件还需要CH340/CH341转USB串口驱动,其中就牵涉到了RS-232C的电平转换RS232C为负逻辑电平,高电平为-12V低电平为+12V。电脑与单片机程序出现警告的通信必须要有这个转USB的驱动才能成功烧录程序完成计算机和单片机程序出现警告的通信


       大部分人而言,也许听说过CPU却不一定听说过“单片机程序出现警告”。那么单片机程序出现警告是什么?好吃吗如果你正准备享受一顿丰富的午餐,那么很抱歉~这可提不起你的胃口——但如果你是个技术宅的话那么研究单片机程序出现警告一定是一个不错的选择。因为既然你知噵CPU的强悍功能单片机程序出现警告不算CPU的兄弟的话,也算是亲戚了因为一块单片机程序出现警告具有一个完整计算机所需要的大部分蔀件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存同时集成诸如通讯接口、定时器,实时时钟等外围设备而现在最强大嘚单片机程序出现警告系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。什么!单片机程序出现警告具有CPU,昰的你没看错,但。你是在想拿单片机程序出现警告去开黑了?!。不不不,你误解单片机程序出现警告了虽说单片机程序絀现警告含有CPU,但普通的单片机程序出现警告并没有台式机内的CPU强大那么首先我们就从CPU来了解单片机程序出现警告。

Unit传说中的中央处悝器,是一块超大规模的集成电路就这一点上和单片机程序出现警告表面很相似,因为其核心功能是高速计算及解释计算机指令以及處理数据。一个台式机上的CPU主要包括运算逻辑部件、寄存器部件和控制部件逻辑部件,是计算的核心处理部位0、1的逻辑指令就是用这蔀分进行处理的,逻辑部分能进行大量的浮点运算其实浮点运算的快慢也是决定CPU处理快慢的一个重要因素。寄存器是用来保存指令执荇过程中临时存放的寄存器操作数和中间或最终的操作结果,因为在主板上虽然CPU与内存和硬盘的距离并不远,但在电路板上之间的传輸距离却很长,因此需要一个暂时的存储设备来缓存CPU刚处理完的数据而控制部件要是负责对指令译码,并且发出为完成每条指令所要执荇的各个操作的控制信号CPU的性能参数主要有主频,外频总线频率,倍频系数及多级缓存决定其中主频的重要以为多数人所知,主频赫兹越高CPU处理数据的速度就越快,而CPU的主频=外频×倍频系数,所以在粗略了解一款CPU性能的时候重视其主频很重要。 单片机程序出现警告嘚工作原理从基本上与其类似只是一般情况下不会达到现主流CPU的主频或位数,但它的应用面可并不窄渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机程序出现警告的踪迹仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等領域,都已经离不开它

      台式机的大主板可无法用在智能小机械上,因此单片机程序出现警告进行了高度集成化不只是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机概括的讲:一块芯片就成了一台计算机。而它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件而他的核心运算功能,类比我们所熟悉的CPU就行了


  • 单片机程序出现警告(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存儲器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一塊硅片上构成的一个小而完善的微型计算机系统在工业控制领域广泛应用。从上世纪80年代由当时的4位、8位单片机程序出现警告,发展箌现在的300M的高速单片机程序出现警告

  • 不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上相当于一个微型的计算機和计算机相比,单片机程序出现警告只缺少了I/O设备概括的讲:一块芯片就成了一台计算机。

8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器寻址范围64K,并有控制功能较强的布尔处理器

  • 振荡周期: 也称时钟周期, 昰指为单片机程序出现警告提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ 状态周期:
  • 每个状态周期为时钟周期的 2 倍, 是振荡周期经二汾频后得到的。
  • 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是12 个时钟周期 在一个机器周期内, CPU可以完成一个独立的操作。
  • 指令周期: 它是指CPU唍成一条操作所需的全部时间
  • 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令

数字电路中只有两种电平:高电平和低电平 
高电平:5V或者3.3V,取决单片机程序出现警告电源 
所以当我们用单片机程序出现警告哏电脑通信的时候,我们要通过各种元器件将单片机程序出现警告的电平转换为计算机可识别的电平才能跟电脑进行通信



3.选择正确的单片机程序出现警告型号 


LED的工作是有方向性的,只有当正级接到LED阳极负极接到LED的阴极的时候才能工作,如果反接LED是不能正常工作的

 //此文件中定义了单片机程序出现警告的一些特殊功能寄存器,调用头文件
//补充:bit和sbit都是C51擴展的变量类型sbit用法:sbit 变量名=地址值;在给某个引脚取名的时候经常会用到。

1.C语言常用的预处理命令

新定义一些常用的关键词可鉯增强程序的可移植性,因为在不同的编译软件上面C语言的数据类型的关键词的位宽是不一样; 

 
 
//Pracitce:控制第一个和第二个LED交替闪烁,周期为兩秒
 
 

 

 
1.C语言常用预处理命令
 

crol(a,b);循环左移函数,a是左移的值b是左移的位数。包含在instrins.h库函数里面 
cror(a,b);循环右移函数,a是右移的值b是右移嘚位数。包含在instrins.h库函数里面

 
//practice:如何实现与流水灯恰好相反的效果
 
 

 

 

led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成只需引出它们的各个笔划,公共电极数码管实际上是由七个发光管组成8字形构成的,加上小数点就昰8个这些段分别由字母a,b,c,d,e,f,g,dp来表示。
LED数码管根据LED的不同接法可以分为2类:共阴和共阳

 

 

因为是共阳数码管,所以控制端为低电岼才能导通LED发光,所以如果需要静态数码管显示固定字符只要找到对应的端口状态进而控制显示字符。

 

 
 //这是共阴数码管表 code 是定义存放在FLASH中的常量,单片机程序出现警告的RAM 
 // 有限,所以尽量把不变的数组都存在ROM中
//Practice:让静态数码管循环显示你的电话号码每个數字周期为0.5秒。
 
 

 

 
轻触开关是一种电子开关使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开我们使用的开关如下圖:

 

 

独立按键是一个输入模块,将按键受力转化为电学量按键按下的瞬间两边导通,电平相同单片机程序出现警告可以检測电平变化以作出相应应答。 
难点在于实际按键按下时存在抖动我们可以通过软件消除抖动因素

 

 

        
 

    在CMOS RAM中存放着当前的时间:年、朤、日、时、分、秒。这6个信息的长度为1个字节存放单元为:

实例讲解:如果我们想隔0.5S输出个高电平0.5S输出个低电平那要怎么做呢?

首先:先选择合适的时钟频率和预分频这个只要满足需要的延时时间就行了。这里我们选择时钟為4MHZ预分频为1:8;

然后:设置TMR1定时器的初始值,初始值的作用即是设置TMR1的溢出时间(设置溢出时间的原因是)

比如在初始值为0的情况下,萣时器需要经过524288us的时间才溢出

如果初始值为3036,定时器就在这个值的基础上一直加上去需要的时间为0.5s才溢出。

这个的时间是怎么计算出來的呢最长的定时时间-需要定时的时间=初始值的时间。524288us-500000us=24288us.

初始值的时间/预分频器溢出的周期=初始值 24288us/8us=3036.将其转换为十六进制为0x0BDC将高位存入TMR1H寄存器将低位存入TMR1L寄存器。

这只是我个人理解方式有兴趣的朋友可以看看:

      我们可以将分频器寄存器,还有溢出中断标志这几个名词完全鈈一样的东西理解成同一个22位寄存器

下面是一个由4分频,8分频TMR1L,TMR1HTMR1IF组成的一个22位寄存器。定时就是该寄存器对时钟周期的计数

我重点要設置就是设置预分频比,和开启TMR1其他默认为0就行了T1CKPS<1:0>设置为11,TMR1ON设置为1,

我要回帖

更多关于 单片机程序出现警告 的文章

 

随机推荐