随笔分类 - PIC单片机
PIC877A,452
摘要:if(DeviceFlag == 0x55){ amount++; switch(amount%2) { case 1:Command_Out =1; break; case 0: Command_Out =0; break; } if(amount==8)//16*8=128ms { amount=0; DeviceStatus = TurnOn; DeviceFlag = 0xFF; }} //发出波形的方式很多种, 1、可用两个定时器,第一用作定时占空比,并且执行一次就关闭,由另外一个定时器开启,另外一个定时器作为定时周期。 1 //---...
阅读全文
摘要:1 #include //用的是PICC编译器 2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); 3 //PIC单片机都需要配置该位,HS是外部晶振模式 4 // 使能PROTECT保护程序存储器 5 //BOREN使能掉电...
阅读全文
摘要:1 void keyScan(void) 2 { 3 char i; 4 uint8 m; 5 uint8 R0 = 0; 6 TRISB=0x38; //xls 2012-11-26 增加复位键RB5 7 8 R0 = PORTB; //RB3,RB4,RB5按键读取 9 R0 &=0x38; //保留键值10 R0 = ~R0; //正逻辑11 /*以下是RC滤波处理,R0,R1對應於KEY1,KEY2的BUF*/12 datakey.allkey = (R0>>3);//将读到的键值移至最右端 比如当...
阅读全文
摘要://基于MCC18编译器,使用HI-PICC不可用 //-------------------------------------------- #include //---------------------------------------------------------------------------- void main (void); void InterruptHandlerHigh (void); unsigned int Timeout; //-----------------------------------------------------...
阅读全文
摘要:PIC中的#pragma idata 和#pragma udata: idata表示已经初始化的数据。udata表示没有初始化的数据。 当一个数据块没有足够的空间用于存放一个连续的数据时(数组);此时便可用#pragma idata 或#pragma udata来定义一个新的存放数据块的区域。但是#pragma idata 或#pragma udata申请的空间也还是有限的,一般不能大于256,如果超过则只能另外想法办了。为什么不能大于256?可以看相关的IC链接文件.lkr,从它里面可以看到它是如何定义bank大小的,没有一个是大于0xff的,因为PIC18的命令是双字节的即只有16位,但.
阅读全文
摘要:USB设备的插入检测机制 首先,在USB集线器的每个下游端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻.对于全速和高速设备,上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,当设备插入到集线器时,由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DE.
阅读全文
摘要:PIC18FX455/X550 系列器件包含全速和低速兼容的USB串行接口引擎(Serial Interface Engine,SIE),它允许在任何USB主机和PIC单片机之间进行高速通信。 可以利用内部收发器或通过外部收发器将SIE 直接连接到USB。内部的3.3V稳压器也可以在5V的应用中被用作内部收发器的电源。 USB模块还包含了某些特殊硬件以提高其工作性能。在器件的数据存储空间(USB RAM)中提供了双端口存储器,以便单片机和 SIE 之间可以直接进行存储器访问。 此外,还提供了缓冲器描述符,允许用户任意设置USB RAM 空间中供端点使用的存储区。 此外还提供了并行通信端口...
阅读全文
摘要:弱上拉,最简单的讲法就是:比较弱的上拉。一般用在和外围器件的通讯上,比如IIC总线等,但不能用于需要驱动能力的上拉应用中。弱上拉,推挽,开漏是3种输出方式.当设置为弱上拉输出方式,此时各个I/O口与VDD之间约有100K电阻.如输出逻辑电平为1,则输出端有接近VDD的电平出现;如输出为0,则弱上拉电路自动关闭.当输出端处于模拟量输入状态时,弱上拉电路也会自动关闭.当设置为漏及开路,应外接上拉电阻(10K),使I/O口输出为1时,有3.5V以上的高电平输出当设置为推挽输出,至少可驱动20多个LS TTL门电路.可直接驱动外设接口,无须外加驱动总线的芯片(如74LS244,74LS245等),其总
阅读全文
摘要:View Code 1 #include <pic.h>//包含单片机内部资源预定义 2 #include <math.h> 3 4 unsigned char const sin_32[]={104,109,114,119,124,128,133,137,142,146,150,154,157,161,164,//15 5 167,169,172,174,176,177,178,179,180,180,180,180,179,178,176,175,173,171,168,165,//20 6 162,159,156,152,148,144,140,135,131,1
阅读全文
摘要:1 //----------------------- 2 //单片机内部10位AD,入口参数为(adcon0,adcon1) 3 // 返回为采样到的AD值 4 //------------------------------------ 5 uint AD10(uchar m,uchar n)//ADCON1,ADCON0参数设置数 6 {// ADCON0=0x01,选择AN0;ADCON1=0x8e 7 uchar i;uint van; 8 union //定义共用体以存每次AD结果 9 {10 uint y1;1...
阅读全文
摘要:PICC使用中初学者容易犯得两个错误我是初次使用PIC单片机,对PICC的编程规范不了解,在编译程序时老是出问题。现在介绍两个最常见的问题给大家,看看有没有和我遇到一样问题的。错误1:变量定义赋值先后顺序问题很重要开发环境为MPLAB IDE V7.43 + PICC 。如下两种代码书写方式,在补充完整之后,哪一个会编译出错?( flag_sendKeyByte 为全局位变量,已定义过)A:flag_sendKeyByte = 0; unsign char mbit = 0;B: unsign char mbit = 0; flag_sendKeyByte = 0;使用正常的C语言习惯来看,似
阅读全文
摘要:引言 在UPS等电力电子设备中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难。SPWM技术较好地克服了这些缺点。目前SPWM的产生方法很多,汇总如下。 1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进; 2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制; 3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器; 4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了...
阅读全文
摘要:PIC18F452(有两个ccp)每个CCP(捕捉/ 比较/PWM )模块有一个16位寄存器,它可以用作16位捕捉寄存器、16位比较寄存器或PWM 主/ 从占空比寄存器。除了特殊事件触发器之外,CCP1的操作和CCP2相同。 捕捉/ 比较/PWM 寄存器1(CCPR1)由两个 8 位寄存器组成:CCPR1L (低字节)和 CCPR1H(高字节)。CCP1CON 寄存器控制CCP1 的操作。 捕捉/ 比较/PWM 寄存器2(CCPR2)由两个 8 位寄存器组成:CCPR2L (低字节)和 CCPR2H(高字节)。CCP2CON 寄存器控制CCP2 的操作。 CCP模式-定时器资源:捕捉:...
阅读全文
摘要:实验48,片内EEPROM读写应用实验47,看门狗应用实验46,PS/2接口键盘解码显示
阅读全文
摘要:开了两个中断,一个定时,另一个为外部中断,void TIMER0INIT(){T0CON=0B10001000;//1000 0011,PSA=0,分频16;TMR0L=0xDC;TMR0H=0x0B;//INTCON=0B10100000 ;//GIE=1;TMR0IE=1;TMR0IF=0;(=1须软件清零)这里有两种方式都对的。GIE=1;TMR0IF=0;TMR0IE=1;}但是,打开另外一个中断时,为了模块化编程,一般另外建一个函数进行外部中断初始化,然而如果采用寄存器字节形式,编写会带来很大麻烦,不能正常中断。采用位的形式设置中断,为比较好的方式。如下:void key_ini..
阅读全文
摘要:时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。机器周期 计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由
阅读全文
摘要:RB0/INT0、RB1/INT1及RB2/INT2引脚的外部中断是边沿触发的;如果INTCON2 寄存器中相应的INTEDGx位被置1,则为上升沿触发;如果该 INTEDGx 位清零,则为下降沿触发。当RBx/INTx引脚上出现一个有效边沿时,相应标志位 INTxF 被置1 。在重新使能该中断前,必须在中断服务程序中先用软件将标志位INTxF 清零。通过对相应的使能位INTxE 清零,可以禁止该中断。如果INTxE 位在进入休眠状态前被置1 ,则所有的外部中断(INT0、INT1 及INT2)能把处理器从休眠状态中唤醒。如果全局中断使能位 GIE 被置1 ,则处理器将在唤醒之后转移到中断向量
阅读全文
摘要:1.PICC安装: PICC编译器可以直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。使用MPLAB-IDE内的调试工具ICE2000 、ICD2 和软件模拟器都可以实现原代码级的程序调试,非常方便。 首先必须在你的计算机中安装 PICC 编译器。安装成功后可以进入IDE ,选择菜单项Project Æ Set Language Tool Locations… ,打开语言工具挂接设置对话框。在对话框中选择“HI-TECH PICC Toolsuite”栏,展开可执行文件组“Executable”后,列出了将被MPLAB-IDE 后台调用的编译器所用到的所
阅读全文
摘要:显示自定义字符 步骤如下: 1. 先将自定义字符写入CGRAM ; 2. 再将CGRAM中的自定义字符送到DDRAM中显示 很简单的:看好了 查看LCD1602 的CGROM 字符代码表,可以发现 从00000000B~00000111B(00H~07H)地址的内容是没有定义的,它是留给用户自己定义的,用户可以通过先定义LCD1602的CGRAM中的内容,然后就可以同调用CGROM字符一样来调用自定义好的字符(这里提示一下,自定义的字符最多可写8个),那么如何设定CGRAM中的内容呢? 首先我们要把所要编写的字符对应于5X8点阵的“字模”提取出来,我们可以通过相关的软件来提...
阅读全文
摘要:1602液晶显示器资料 所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 1.1602液晶的正面(绿色背光,黑色字体) 2.1602液晶背面(绿色背光,黑色字体) 3.另一种1602液晶模块,显示屏是蓝色背光白色字体 字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义。HD44780...
阅读全文

浙公网安备 33010602011771号