
PIC单片机
快乐的老鼠
如果您觉得我的文章帮助了您,那就随手点个赞吧 :)
展开
-
PIC16F877A第一个程序
玩过很多单片机,擅长的有51,MSP430,STM8,STM32唯有PIC没有玩过,去淘宝上买了块开发板玩玩,说真的第一次买PIC,真不知道需要买哪些硬件,看中了一款开发板,于是问商家除了开发板还需不需要编程器之内的? 商家说自己不懂技术,这让我就懵逼了~ 于是厚着脸皮去别的家问了还需要买哪些才能开发程序,结果发现还差一个kit编程器.开发板和仿真器都买回来了,第一件事情就是搭建开发环境了...原创 2018-11-12 22:15:30 · 5558 阅读 · 1 评论 -
PIC16F877A定时器1实验
PIC16F877A单片机的Timer1是16位的,我们利用此定时器实现一个10ms的定时,在定时中断里我们再判断1s是否到了,到了之后将LED灯状态取反。#include <htc.h>#define u8 unsigned char#define u16 unsigned int__CONFIG(0xFF32);#define LED PORTDchar ...原创 2018-11-15 21:42:38 · 2159 阅读 · 0 评论 -
PIC16F877A内部比较器使用Demo
内部比较器的用途是检测外部传感器的状态变化,例如霍尔开关,有金属接近的时候输出高电平,没有则输出低电平,为什么不直接用IO口来检测呢? 我想比较器跟普通 IO 检测一个很不同的地方就它有参考电压,设置一个合理的阀值就能让比较器正确的工作,这点是 IO 不能比拟的,而且比较器也有中断,方便程序的编写。#include <htc.h>__CONFIG(0xFF32);#def...原创 2018-11-20 14:57:02 · 2400 阅读 · 0 评论 -
PIC16F877A 模数转换Demo
#include <htc.h>#include <stdio.h>__CONFIG(0xFF32);#define u8 unsigned char#define u16 unsigned intvoid delayus(){ int i; for(i=200;i--;);}/********延时程序********/void Delay_...原创 2018-11-20 19:09:30 · 805 阅读 · 0 评论 -
PIC16F877A 内部EEPROM读写演示Demo
#include <htc.h>#include <stdio.h>__CONFIG(0xFF32);#define u8 unsigned char#define u16 unsigned intvoid Delay_ms(u16 xms){ int i,j; for(i=0;i<xms;i++) { for(j=0;j<71...原创 2018-11-20 20:20:27 · 1211 阅读 · 0 评论 -
关于PIC16F877A PWM计算的问题
第一次看这个图时候觉得有的懵~ 后来看懂也就好多了。对pwm实验,我们一般只关心频率和占空比的问题,下来我来讲解下这个图:首先假设单片机外接4MHz晶振;PWM波的周期是由PR2寄存器来决定的,占空比是由CCPR1L+2位组成一个10位分辨率;而周期却是8位分辨率,分子大于分母,那这PWM还能正常工作吗?我相信很多人一开始可能跟我一样,有这样的疑惑! 我们看下官方数...原创 2018-11-16 14:05:18 · 2619 阅读 · 1 评论 -
PIC16F877A DS18B20数字温度计实验
main.c#include <htc.h>#include <stdio.h>#include "def.h"#include "ds18b20.h"__CONFIG(0xFF32); void Delay_ms(u16 xms){ int i,j; for(i=0;i<xms;i++) { for(j=0;j<71;j++...原创 2018-11-21 17:56:07 · 1401 阅读 · 0 评论 -
PIC里printf的使用
#include <stdio.h>void SerialInit(void){ TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1 RCSTA=0x80; SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25}//printf函数重定向void putch(u8 c){ TXREG =...原创 2018-11-20 11:35:10 · 2325 阅读 · 0 评论 -
PIC16单片机看门狗的使用
#include <htc.h>__CONFIG(0xFF36);#define u8 unsigned char#define u16 unsigned int#define CLRWDT() asm("clrwdt")void delay(u16 ms){ int i,j; for(i=0;i<ms;i++) for(j=0;j<71;j+...原创 2018-11-20 13:50:35 · 3407 阅读 · 0 评论