【PIC单片机】Pic单片机基础知识

judy的头像

本次学习采用PIC16F877A芯片及HJ-5G 开发板

一、IO口操作

1.1 设置I/O口方向:input or output

TRISx 方向寄存器 (Transport and Receive Index Storage)

1.2 设置I/O口的数值

PORTx 数值寄存器 端口 P.S.复位后初始状态:输入 数值为1 (记忆方法 input 1;output 0)//流水灯 void main(void) { uint8 i = 0; TRISD = 0X00; // while(1) // { // // for(i=0;i<8;i++) // { // PORTD =~(1<i); // Delay(500); // } // for(i=0;i<8;i++) // { // PORTD =(0x80>i); // Delay(500); // } // } while(1) { PORTD=0x01; for(i=8;i>0;i--) { Delay(200); PORTD=PORTD<1; } } }

1.3 共阴极数码管模块

1.4 其他

• ULM2003芯片为反相器

• 跳线帽 硬件设置需正确

• 动态数码管显示——当IO口不够用时,可利用人眼的影像残留和数码管的余晖动态轮转显示

四、中断

4.1 中断响应,中断处理,中断返回

4.2 中断函数无须声明

4.3 不论中断使能位如何,当某一中断源发出请求时,中断标志位都会被设置为1,只是系统不一定会对该请求做处理。

4.4 中断服务程序中使用的所有子函数在主函数中不能出现(因为PICC编译器不支持函数的重载?需定义两个一样的延时函数)

五、计时器

TMR 模块
5.1 TMR0工作模式选择 OPTION_REG寄存器的T0CS位
T0CS = 0 —— 定时器(触发信号来源于单片机内部)
T0CS = 1 —— 计数器(触发信号来源于外部)

5.2 TMR0 8位,TMR1 16位

5.3 TMR0寄存器 存放着TMR0计数的初始值

5.4 计数溢出时,TMR0溢出中断标志位置1,(此时若溢出使能位T0IE 和总中断使能位GIE置1,系统将接受TMR0中断请求)

5.5 固定时延计算 n位TMR寄存器

分频比(2^n)指令周期
eg. 4MHz 晶振 指令周期为1微秒,对于16位TMR1,分频比为8

(65536-X)81 = 100 000 (每次100ms,X为寄存器初值)

P.S.分频比

eg.分频比1:8 必须等待8个脉冲到来,计数器才会加1(高频——>低频)

六、串口通信

6.1 异步/同步

异步通信:发送与接收方使用各自的控制时钟(两者时钟大约一致即可)

同步通信:发送方对接收方时钟直接控制,时钟完全一致

6.2 奇偶校验

奇校验:数据中"1"的个数与校验位"1"的个数之和为奇数

6.3 传输速率

P.S.比特率和波特率的区别

• 比特率 (单个调制状态对应的二进制位数)
在数字信道中,比特率是数字信号的传输速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数bit/s(bps)、每秒千比特数(Kbps)或每秒兆比特数(Mbps)来表示(此处K和M分别为1000和1000000,而不是涉及计算机存储器容量时的1024和1048576)。

• 波特率 (每秒传播调制状态个数)
波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,其单位为波特(Baud)。

• 波特率与比特率的关系为:比特率=波特率X单个调制状态对应的二进制位数。

P.S. 波特率:单片机或计算机在串口通信时的速率
波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒是指每秒传输1比特(bit)。 单位“波特”本身就已经是代表每秒的调制数,以“波特每秒”(Baud per second)为单位是一种常见的错误。

波特率越高 不容易出现乱码

6.4 相关寄存器

6.4.1 TXSTA寄存器:TRANSMIT STATUS AND CONTROL REGISTER(发送状态与控制寄存器)

6.4.2 RCSTA寄存器:RECEIVE STATUS AND CONTROL REGISTER

6.4.3 BRG波特率发生器 :Baud Rate Generator波特率控制寄存器

6.5 USART模块(F877A芯片自带)

6.6 计算机端 RS232电平 (15v) ————> 单片机端 TTL电平 (5V)
利用MAX232进行电平转换

6.7 端口复用
RC6 —— TX 发送 Transmit
RC7 —— RX 接收 Receive

其他

1.OPTION ——>OPTION_REG (编译器不识别时)

2.数据类型 unsigned char 是无符号字符,数据长度是8位,表示值范围从0~255

unsigned int 是无符号整数,数据长度是16位(或者32位,看单片机的型号而定),表示范围从0~65535(或者0~4294967295)

转自: Neo007-博客

主图: 

 【PIC单片机】Pic单片机基础知识

用户喜欢...

为什么单片机中既有Flash又有EEPROM?

单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。 插播一段:ROM最初...


单片机延时问题20问

答:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。 如果想精确延时,一般需要用到定时器,延时时间与晶振有...


单片机小白学步(9) 用万用焊板搭建实验电路

这一篇我们继续上篇《单片机小白学步(8) 用面包板搭建实验电路》的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路。在此之前,先普及几点基础知识。 电路板 首先我们了解下...


C51单片机是怎么存储程序和数据的

初学51总是会有这样的疑问,从电脑下载程序到开发板后,程序去哪了? C51中,用户或应用程序,系统程序和数据都是存放在哪的? 51单片机从物理结构上,可分为片内,片外程序存储器,片...


51单片机模拟串口的方法的总结

随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需...


单片机应用系统硬件设计应该考虑的11个问题

(1)存储器扩展: 容量需求,在选择时就考虑到单片机的内部存储器资源,如能满足要求就不需要进行扩展,在必须扩展时注意存储器的类型、容量和接口,一般尽量留有余地,并且尽可能减...


STM32单片机串口通信波特率计算方法

1. 什么是波特率 不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是...


基于AT89S52单片机的智能数字电子时钟设计

(1)数字钟实现对年、月、日、时、分、秒、星期显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带...


单片机小白学步(8) 用面包板搭建实验电路

前面介绍了几种准备实验板的方案。这里先介绍方案一,我将同大家一起搭建一块简易的单片机实验板,一起感受动手实践的乐趣。 我们有两种自己搭建实验板的方案,一是用面包板,二是...


单片机开发者的常疏忽的几个问题

我的工作主要是主导新产品试产,在实际的工作中,经常出现因为RD人员的设计“疏忽”导致试产失败。这个疏忽要加上引号,是因为这并不是真正的粗心造成的,而是对生产工艺的不熟悉而...


单片机小白学步(7) 准备实验板——萝卜青菜,各有所爱

单片机的学习,最重要的一点就是多实践。站在岸上学不会游泳。没有实践,恐怕永远也学不好单片机。我将和大家一起,选择一款适合自己的单片机实验板。 方案选择 我们主要有三个可选...


通俗讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系!

首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件...


单片机晶振不起振经常遇到的问题及注意事项!

单片机中如果没有了晶振会怎么样? 在上一篇的《单片机中如果没有了晶振会怎么样?》一文中,小编着重讲解的是石英晶振在单片机中的重要性,然而,作为一种精密的频率元件,单片机...


单片机小白学步(6) 单片机最小系统——麻雀虽小,五脏俱全

前面介绍了集成电路的管脚编号识别,这里我们简单了解下51单片机的40个管脚具体的作用。对于没有接触过复杂电子元器件的读者来说,或许会感觉非常难,但实际上完全不需要有畏惧心理...


编写单片机应用程序的步骤

1、搞清楚功能、编制方案。 接到一个单片机项目设计文件之后,并不是马上动手编写程序,而是仔细研究用户提出的技术要求或者技术说明,根据这些技术要求和技术说明,也就是客户要求...


单片机小白学步(5) 集成电路、封装相关知识

在前文大家都有见到集成电路的图片,其外形有很多种。在这些芯片中真正起作用的部分是集成在硅片上的晶体管。而我们看到的样子,则是在其外部用外壳进行封装。把硅片上的电路管脚,...