• 本次学习采用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位,看单片机的型号而定),表示范围从065535(或者04294967295)

【PIC单片机】Pic单片机基础知识的更多相关文章

  1. 【单片机通信协议】CAN总线基础知识

    CAN总线基础知识(一) 1.1 CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠 ...

  2. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能

    本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...

  3. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  4. 使用寄存器点亮LED——前言基础知识

    在点亮LED之前,我们需要具备一些基础知识: GPIO—general purpose intput output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚 ...

  5. FreeRTOS基础知识

    前面一篇文章介绍了一些命名规范之类的基础知识,但是我觉得还缺少一定前言知识,就是裸机和操作系统有什么区别,为什么我们需要学freertos,因为招聘要求?那么为什么招聘网又会有这个要求呢?所以我们为什 ...

  6. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识

    前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP.MySQL[语法基础].项目github地址:https://github.com/66Web/php_book_stor ...

  7. 「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指南」一份涵盖大 ...

  8. FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...

  9. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  10. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

随机推荐

  1. oracle数据库修改密码

    忘记了数据库的登录密码,oracle数据库无法登录了. 先删除原先的密码保存文件: del E:\oracle_app\Administrator\product\11.2.0\dbhome_1\da ...

  2. php 的基本语法

    八种数据类型: 4种标量类型:boolean.integer.float.string 2种复合类型:array.object 2种特殊类型:resource.NULL 如果想看某个表达式的值和类型用 ...

  3. [转] javascript 判断对象是否存在的10种方法总结

    [From] http://www.jb51.net/article/44726.htm Javascript语言的设计不够严谨,很多地方一不小心就会出错.举例来说,请考虑以下情况.现在,我们要判断一 ...

  4. SQL手工注入学习 一

    sql注入:    (基于DVWA环境的sql注入) 流程:    1.判断是否有SQL注入漏洞    2.判断操作系统.数据库和web应用的类型    3.获取数据库信息看,包括管理员信息(拖库)  ...

  5. 行业UI设计师总结UI设计8个趋势

    纵观整个设计的历史可以发现,设计的历史演变都无一例外都是从复杂的装饰性设计逐步的演化为更加注重功能性的简洁化设计.并且设计师们还在不停的试图通过各种设计语言的创新追求极至设计的可能性.设计潮流变更的核 ...

  6. Dubbo解析及原理浅析

    原文链接:https://blog.csdn.net/chao_19/article/details/51764150 一.Duboo基本概念解释 Dubbo是一种分布式服务框架. Webservic ...

  7. IDEA 中tomcat启动问题时,一直出去发布状态,无法加载项目

    解决方法:排查clean.build之前添加的xml中的sql语句,发现sql多写了一个逗号,导致无法加载项目.修改完sql,就可以跑了.

  8. Python基本数据类型和其常用方法

    Number Bool String List Tuple Dictionary Number 在Python3中 所有整数不管多大都是Int类型,没有Long类型,Python2中有Long类型. ...

  9. (转)shell脚本之文件测试操作符及整数比较符

    shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...

  10. hibernate框架配置文件详解

    1 orm元数据配置文件(映射文件) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hib ...