zoukankan      html  css  js  c++  java
  • 【PIC单片机】Pic单片机基础知识

    • 本次学习采用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)

  • 相关阅读:
    proxool数据库连接池用法
    SQL Server 用链接server 同步MySQL
    使用DNSCrypt解决Dropbox污染问题
    POJ 1952 BUY LOW, BUY LOWER DP记录数据
    使用doxygen为C/C++程序生成中文文档
    构造器(二)----指定构造器、便利构造器
    Spring Boot 部署与服务配置
    排序算法c语言描述---冒泡排序
    【转】Android Studio系列教程一--下载与安装
    【转】Windows环境下Android Studio v1.0安装教程
  • 原文地址:https://www.cnblogs.com/Neo007/p/7152795.html
Copyright © 2011-2022 走看看