关于PIC单片机的一些经验总结


为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流我写了这篇关于PIC单片机的学习心得都是在看了手册和编程调试后用自己的语言组织的其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评提出宝贵的意见



2.PIC单片机的概述


PIC16F616是一款14引脚、8位的CMOS单片机采用精简指令集仅有35条指令由于采用了数据总线和指令总线分离的哈佛总线结构使得除少量指令不是单周期之外大部分的指令都是单周期指令这样有利于提高单片机的运行速度和执行效率


PIC16F616这款单片机供电电压可以在2V到5.5V之间内部集成了一个RC振荡器频率可以配置成8MHZ或者4MHZ也可以用外部晶振提供时钟内部集成有AD转换、比较器等硬件模块还具有上电复位、欠压复位、看门狗、代码保护等功能三个定时器、PWM发生器等可以由用户编程下面我来一一介绍关于PIC单片机的这些模块和功能



3.存储器


PIC16F616分为程序存储其和数据存储器程序存储器的大小是2048words数据存储器的大小是128bytes


程序存储器中0000H的地址为复位地址当上电或者看门狗计时器等复位的时候均会导致PC指针指向复位地址地址0004H为中断地址当无论发生什么中断的时候PC指针就会指向此地址在地址0005H~07FFH可以移植程序


数据存储器分为两个部分分别叫做bank0和bank1其中bank0的地址范围为:00H-7FHBank1的地址范围为80H-FFH一般的寄存器都放在里面可以通过寄存器STATUSL里面的RP0位来选择bank0和bank1


在编程序的时候要注意的是当你要操作的寄存器在bank0的时候先要选择bank0(将寄存器STATUS的RP0位置0)然后再对你所要操作的寄存器进行操作当你要操作的寄存器在bank1的时候同理先要选择bank1


如果想要定义一些变量可以在数据存储器20H开始的地址定义定义的地址范围为20H-7FH一般这么多就够用了



4.PIC的输入输出端口


在学习这个部分的时候曾经遇到过一些问题PIC单片机的引脚不多大多都是复用引脚例如AD、IO、比较器、外接晶振等等所以在配置端口的时候一定要知道每个功能怎样设置才能实现的在这一小节中我要讲的是通用IO口的设置问题


PIC16F616有12个IO口但是有一个引脚(RA3)只能作为输入引脚用不能用作输出另外A口具有电平变化中断的功能而C口没有在设计的时候要注意


在设置的时候一般要进行以下几项设置:


(1)设置端口是模拟端口还是数字端口可以通过寄存器ANSEL来设置例如你想用AD就要将相应的引脚设置为模拟输入端口


(2)如果你选择的是数字端口接下来就要设置端口的方向是输入还是输出(RA3除外)可通过寄存器TRISA(A口)或TRISC(C口)来设置


(3)设置端口的输出电平可以通过寄存器PORTA(A口)或PORTC(C口)来设置


这是对IO口的通用设置但是这不是全部的设置接下来的设置要看时A口还是C口了对于A口它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT引脚的沿中断如果想要这些功能就要对相应的寄存器进行设置


弱上拉的设置:只有当引脚为输出的时候弱上拉才有效可以通过寄存器WPUA来设置相应引脚的弱上拉值得一提的如果开启了弱上拉会有多余的电流浪费这样对于低功耗的设计是不可取的但是如果在进行一些例如键盘电路设计的候可以开启弱上拉功能这样就不需要在键盘电路中加上拉电阻了


电平变化中断的设置:可以通过寄存器IOCA来设置但是首先要将相应引脚设置为数字端口且为输入状态同时要将寄存器INTCON的REIE位设置为1总中断要允许(置寄存器INTCON的GIE位)如果设置相应引脚有这个功能当此引脚电平发生的时候就会产生一个中断同时一些中断标志位被置上(INTCON的RAIF位被置1)且总中断GIE被置为0在中断服务程序中要软件清除RAIF位和重新置GIE位才能继续开启此中断


RA2/INT脚的沿中断设置:同样首先要将相应引脚设置为数字端口且为输入状态设置INTCON的INTF位为1表示允许int引脚外部中断寄存器OPTION_REG的INTEGD位可以设置是上升沿中断还是下降沿中断当发生中断时INTCON的INTF位被置为1GIE被清零在中断服务程序中要软件清除INTF位和重新置GIE位才能继续开启此中断


对于C口不能产生电平变化中断和沿中断



5.定时器

定时器是单片机的一个很重要的部分用它可以产生很多不同的定时时间来满足程序设计的不同需求PIC16F616有三个定时器分别是Timer0、Timer1、Timer2它们的用法不是很相同下面来分别谈谈这三个定时器的用法和设置问题


(1)Timer0

Timer0是一个八位的计数器它有一个八位的计数寄存器TMR0八位的预分频器(与看门狗共用)可以选择内部或者是外部时钟源有计数器溢出中断的功能


Timer0可以作为一个定时器或者计数器来使用与Timer0有关的寄存器有:TMR0INTCONOPTION_REGTRISA


当Timer0作为定时器来使用的时候要设置OPTION_REG的T0CS位为0表示用的是内部时钟每一个指令周期TMR0的值会增加(当没有预分频的时候)当TMR0被赋值的时候会有两个指令周期的延时预分频器可以和看门狗共用可以由OPTION_REG的PSA位来设置当PSA 为0的时候分频器选择Timer0当PSA为1的时候分频器选择看门狗


同时与分频器的分频值可以通过寄存器OPTION_REG来设置设置的值可以由1:2到1:256当Timer0的计数器TMR0计数从FFH到00H的时候会产生溢出同时溢出标志位(INTCON寄存器的T0IF位)会置位(无论Timer0的中断是否开启)如果中断已经开启了(INTCON寄存器的T0IE被置位)那么就会产生溢出中断T0IF位需要软件对其进行清零


当Timer0作为计数器来使用的时候就要用外部时钟源(OPTION_REG的T0CS置1)每次当引脚T0CK1的沿到来时Timer0的 TMR0会增加1上升沿和下降沿可以由OPTION_REG的T0SE来设置中断和Timer0作为定时器使用时一样在我们编程序的时候可以用 Timer0进行定时或产生定时信息下面我来解释定时器的定时时间的计算假设Timer0用的时钟源是内部的4MHZ那么每条指令的执行时间就是 1us设Timer0的预分频系数是1:256TMR0的初值是6那么定时时间为:


256×(256-6)×1us=64ms


在编程的时候需要注意的是Timer0的中断是不能把单片机从SLEEP的状态唤醒的


(2)Timer1


Timer1是一个十六位的计数器它有一个计数寄存器对(TMR1H:TMR1L)时钟源也是内外可选的具有一个2bit的预分频器可以同步或者异步操作具有中断功能但是溢出中断只能在外部时钟、异步的模式才能将单片机从SLEEP中唤醒Timer1具有捕获/比较功能还有被一些特殊事件触发功能(ECCP)比较器的输出可以与Timer1的时钟同步下面来一一介绍这些功能


在编程的时候也可以按照这样的步骤来进行设置寄存器T1CON时钟源可以选择外部或者内部的时钟源外部时钟源可以选择LP晶体Timer1在选择内部时钟时可以运行在定时器的状态选择外部时钟的时候可以运行在定时器或者是计数器状态工作于计数器状态时可以选择门限是高电平还是低电平计数这些都可以通过寄存器T1CON来设置


以下是T1CON每个位的具体功能:bit1:Timer1是否开启位当此位设为1时Timer1开启设为0时Timer1关闭;bit2:时钟源选择位置1时选择外部时钟(T1CK1引脚的上升沿)此位置0时选择的是内部时钟并且和T1ACS(寄存器CM2CON1中)配合当 T1ACS位为0时时钟为FOSC/4当T1ACS位为1时时钟为FOSCbit2:T1SYNC:定时器1的外部时钟输入同步位当 TMR1CS位为1、T1SYNC位为1定时器1被设置成与外部时钟不同步T1SYNC位为0时定时器1被设置成与外部时钟同步模式Bit3: T1OSCEN:此位为1时Timer1的时钟选择LP为0时LP晶体被关闭Bit5-4:T1CKPS:Timer1时钟的预分频系数设置通过这两位的是指可以讲Timer1设置成1:1、1:2、1:4、1:8几种分频值Bit6:TMR1GE:只有当TMR1ON位为1时才有效当此位为 1时Timer1计数被Timer1的门限控制此位为0时Timer1正常计数Bit7:T1GINV:此位为1时Timer1在门限为高时计数此位为0时Timer1在门限为低时计数



Timer1的中断编程:当Timer1的计数产生溢出的时候如果Timer1中断允许的话就会产生中断中断可以这样设置Timer1的中断允许位TMR1IE(在PIE1寄存器中)置1寄存器INTCON的PEIE位置1同时总中断位GIE(位于寄存器INTCON中)要置为1当定时器产生中断的时候会把中断标志T1IF置为1(位于寄存器PIR1中)然后PC指针指向0004H地址T1IF位必须软件清除


(3)Timer2


Timer2的功能于Timer1有些不同Timer2时一个八位的计数器有一个八位的计数寄存器TMR2Timer2具有以下功能:有两个分频器一个是前分频器一个是后分频器分频可以软件进行设置另外Timer2的时钟源是指令时间(FOSC/4)Timer2有一个寄存器 PR2此寄存器的功能是当TMR2增加到PR2的值时将产生中断当然中断必须允许然后PR2的值会重新变为00H下面来介绍Timer2的编程:


Timer2的控制寄存器T2CON作用是设置Timer2的开启关闭和前后分频的分频系数寄存器T2CON的TOUTPS<3:0> 位设置后分频系数可以被设置成1:1~1:16;位TMR2ON为1时Timer2开启为0时Timer2关闭;位T2CKPS<1: 0>可以设置前分频系数可以被设置成1、4、16


Timer2的中断可以这样控制允许Timer2中断位TMR2IE(位于PIE1寄存器内)被置1时Timer2中断被允许被置0时 Timer2中断禁止寄存器INTCON的PEIE位置1同时总中断位GIE(位于寄存器INTCON中)置为1通过上面的设置Timer2就可以产生中断了当定时器产生中断的时候会把中断标志T2IF置为1(位于寄存器PIR1中)然后PC指针指向0004H地址中断标志位T2IF必须软件清除



下面是三个定时器的比较:


唤醒功能

其他功能

定时器Timer0

内部或外部时钟源有一个预分频器

定时器、

醒功能.

计数器值溢出时发生中断

预分频器与看门狗共用.

定时器Timer1

内部或外部时钟源有一个预分频器

定时器、计数器

外部时钟、异步模式时可唤醒CPU

计数器值溢出时发生中断

与比较器模块、

捕获/比较模块共用

定时器Timer2

有前分频器和后分频器

醒功能.

计数器值与预置值相等时发生中断

PWM的产生需要此定时器



6.AD模块


PIC16F616有一个十位、八路的AD转换器其参考电压可以为电源电压VDD也可以是外部参考电压(VREF引脚)当AD转换完成后可以产生一个中断此中断可以把单片机从睡眠状态中唤醒下面来介绍一下关于AD转换的编程方法


要使用一个ADC要做的有一下几件事情:


大家在刚接触单片机时可能还真不容易,又是引脚图、电路图,又是汇编语言的,那么多功能、种类,完全了解其实也不可能。在学习过程中抓住关键点,往往使我们事倍功半,学习兴趣大大地增加。今天,小编梳理一下单片机学习的关键点,希望大家看后能够轻轻松松学好单片机。

(1)设置端口需要采样模拟信号的端口必须设置为模拟输入状态如果设置为数字端口将使转换结果不正确端口的模拟输入可以由寄存器ANSEL来配置在讲RA口的时候已经说到了如何配置了


(2)通道的选择有八路外部通道和三路内部通道可以通过ADCON0寄存器的CHS<3:0>位来设置通道的选择


(3)参考电压的选择参考电压可以是VDD也可以是外部参考电压可以通过ADCON0寄存器的VCFG位来设置当VCFG=0时参考电压为VDD当VCFG=1时参考电压为外部参考电压(来自VREF引脚)


(4)ADC的转换格式AD转换后的结果保存在一个寄存器对里面:ADRESH和ADRESL但是AD转换结果只有十位设置AD转换格式可以通过设置 ADCON0的ADFM位来选择当ADFM=1时10位的AD结果的低八位保存在ADRESL内高两位保存在ADRESH内;当ADFM=0时10位的AD结果的高八位保存在ADRESH内低两位保存在ADRESL内


(5)AD时钟源的选择寄存器ADCON1专门来设置AD的时钟源ADCS<2:0>不同组合可以将AD的时钟源设置为不同的频率可以为FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64和FRC(内部RC)


(6)AD中断的配置要使用AD的中断功能可以先把AD中断使能ADIE位设置为1(在寄存器PIE1中)PEIE位置1(在INTCON寄存器中)总中断GIE位置1(INTCON寄存器中)


要开始一个AD转换首先要使能ADC模块即把寄存器ADCON0的ADON位置1即可然后将GO/DONE位(ADCON0中)置1就可以启动AD转换了

AD转换需要时间转换1bit需要Tad的时间Tad与AD转换的时钟源和VDD有关转换十位就需要11个Tad时间如果第一个AD转换完成了要进行第二个AD转换必须还要等待2*Tad的时间才能开始一个AD完成了GO/DONE位会被置为0如果中断允许的话就会产生中断且中断标志位ADIF(寄存器PIR1内)会被置1在AD中断程序中就可以把AD转换结果读取出来(读ADRESH和ADRESL)需要时把AD中断标志位清零


AD中断可以把单片机从睡眠中唤醒但是要注意使用这个功能的时候时钟源必须设置为FRC否则的话在睡眠的时候就不会产生AD中断了



7.看门狗


PIC16F616的看门狗WDT其定时计数的脉冲序列由片内独立的RC振荡器产生所以它不需要外接任何器件就可以工作而且这个片内RC振荡器与引脚OSC1/CLKIN上的振荡电路无关即使OSC1和OSC2上的时钟不工作WDT照样可以监视定时例如:当PIC16F616在执行 SLEEP指令后芯片进入休眠状态CPU不工作主振荡器也停止工作但是WDT照样可监视定时当WDT超时溢出后可唤醒芯片继续正常的操作而在正常操作期间WDT超时溢出将产生一个复位信号如果不需要这种监视定时功能在编程时可关闭这个功能


WDT的定时周期在不加分频器的情况下其基本定时时间是18ms这个定时时间还受温度、VDD和不同元器件的工艺参数等的影响如果需要更长的定时周期还可以通过软件控制OPTION寄存器(PSA位置1)把预分频器配置给WDT这个预分频器的最大分频比可达到1∶128这样就可把定时周期扩大128倍即达到2.3秒


WDT的预分频器是和Timer0所共用的如果把预分频器配置给WDT用CLRWDT和SLEEP指令可以同时对WDT和预分频器清零从而防止计时溢出引起芯片复位所以在正常情况下必须在每次计时溢出之前执行一条CLRWDT指令喂一次狗以避免引起芯片复位当系统受到严重干扰处于失控状态时就不可能在每次计时溢出之前执行一条CLRWDT指令WDT就产生计时溢出从而引起芯片复位从失控状态又重新进入正常运行状态


当WDT计时溢出时还会同时清除状态寄存器中的D4位T0检测T0位即可知道复位是否由于WDT计时溢出引起的



8.比较器


PIC16F616有两个比较器:C1和C2C1的结构比C2的结构要简单下面我分别对这两个比较器的用法和特性作简要说明


(4)比较器C1:它有一个独立的控制寄存器CM1CON0通过这个寄存器可以对比较器C1进行一些设置位C1ON可以控制C1的开启关闭位C1OE 可以决定比较器的输出是从引脚输出还是内部输出位C1POL可以选择比较器输出的极性位C1R选择参考电压是链接到引脚C1IN+还是连接到 C1VREFC1CH可以选择比较器负端从哪一个引脚输入的位C1OUT存放了比较器的输出结果


(5)比较器C2:它的控制寄存器CM2CON0的操作跟C1一样但是比较器C2比比较其C1功能要强因为它与Timer1挂上钩了C2可以连接到 Timer1而C1不能当C2与Timer1相连接的时候C2的输出可以设置成与Timer1的下降沿锁定如果Timer1有分频则比较器的输出与分频后的Timer1下降沿锁定可以通过相关寄存器来进行设置


(6)两个比较还有其它的功能都能组成滞回比较器这样就可以对输入电压有一定的滤波功能两个比较器还可以形成一个SR锁存器


由于在本项目中没有选择用比较器这个功能所以在这里就不详细叙述其细节设置但要注意的是在不用此模块的时候要能够保证此模块不能影响其他模块的正常工作可以把比较器功能关闭(通过寄存器CM1CON0、CM2CON0的CxON位置0来关闭)


9.捕获/比较/PWM功能


PIC16F616具有捕获/比较/PWM的模块下面来简单的介绍一下它们的功能


这三个功能需要定时器的支持捕获和比较功能需要定时器Timer1的支持PWM功能需要定时器Timer2的支持都有中断的功能选择这三种功能的某一种功能可以通过寄存器CCP1CON来设置CCP1CON的低四位CCP1M<3:0>可以通过不同的组合来开启某项功能和关闭所有功能当CCP1M<3:0>=0000的时候捕获/比较/PWM模块的所有功能被禁止具体其他的不同组合实现的功能请参考 PIC16F616的用户手册


当选择捕获功能时它可以捕获引脚CCP1发生的事件同时把16位Timer1的计数值拷贝到CCPR1H:CCPR1L中来引脚CCP1的发生事件可以指的是下列事件:CCP1引脚的每个上升沿或者下降沿、第四个上升沿、第十六个上升沿可以通过寄存器CCP1CON的低四位CCP1M< 3:0>来设置是哪一种事件当事件发生的时候单片机会置中断标志位CCP1IF(寄存器PIR1上)如果中断被允许(寄存器PEIE的位 CCP1IE=1)的话就会产生中断中断标志位CCP1IF需要软件清零


选择比较功能时如果定时器Timer1的计数器值与寄存器CCPR1H:CCPR1L相等的话将产生下面的事件:把引脚CCP1置1/0、产生一个中断、触发一个事件(把定时器Timer1的技术器TMR1清零并且如果此时AD是允许的话它将触发一次AD转换)这些事件可以通过寄存器 CCP1CON的低四位CCP1M<3:0>来设置是哪一种事件


当选择PWM功能时通过设置PR2、T2CON、CCPR1L、CCP1CON这四个寄存器模块可以产生不同占空比的PWM波形具体的设置和占空比的计算请参考手册


如果我们不需要这些功能可以把这个模块关闭掉(设置CCP1M<3:0>=0000即可)



10. 复位、中断和睡眠

(1)复位


PIC16F616包括这样的几个复位功能上电复位(Power-on)、硬件复位、欠压复位(Brown-out)、看门狗复位


关于上电复位POR大家都不陌生单片机在上电的时候保持复位直到电压能够满足其正常的工作电压同时你可以通过对CONNFIG(编译器上即可设置)的设置来开启Power-up Time这个时间一般为64ms


硬件复位可以通过MCLR引脚外界复位电路即可实现硬件复位(将此引脚接低电平)


欠压复位这个功能是可选的也可以直接在编译环境中配置CONFIG寄存器来开启此功能当此功能开启时如果单片机在运行的时候供电电压不足就会引起欠压复位复位后单片机如果发现供电电压已经达到正常值的时候会有一个64ms的延时然后再运行程序


关于看门狗的复位在看门狗部分已经说了这里的一些复位还涉及到一些标志位这些标志位分布在STATUS和PCON上面STATUS上有两个位 TO、PD当标志位TO=1时表示表示已经操作了上电复位或者是执行了CLRWDT或者SLEEP指令当TO=0时表示发生了看门狗复位当标志位PD=1时表示操作了上电复位或者是执行了CLRWDT指令当PD=0时表示执行了SLEEP指令PCON上有两个标志位是POR和BOR分别表示的是上电复位和欠压复位标志具体的可以参看手册


(2)中断


PIC16F616包括这样的几个中断源:RA2/INT引脚外部中断、RA端口电平变化中断、定时器Timer0、Timer1、Timer2溢出中断、比较器中断、AD转换中断、捕获/比较/PWM中断


这些中断的允许位和中断标志位分别位于INTCON、PIE1、PIR1、IOCA这些寄存器里面如果要开启相应的中断就要置相应的中断允许位开启总中断位(INTCON寄存器的GIE位)还要开启INTCON上的PEIE位(定时器0溢出中断、INT引脚沿中断和RA端口的电平变化中断除外)


当中断发生的时候相应的中断标志位就会置起来同时总中断标志位GIE会被清零保证在此时间内不会相应其他的中断然后将当前的PC指针值压栈保存以用来保证中断能正确的返回到原来执行的地方然后PC指针指向中断向量地址0004H的地方所以在编程序的时候你可以在0004H的地址存一条跳转指令跳到你定义的中断服务程序里面去就可以了如果在中断的时候想保存一些重要的寄存器的话可以在中断程序的起始将其保存然后在中断服务程序的末尾将其恢复即可


要注意的是中断标志位不会自己清零这就需要在编程的时候在软件上对其清零否则的话单片机不停的执行中断服务程序如果你想要在以后的程序中还能产生中断的话就要把总中断允许位GIE重新置位


(3)睡眠


要想让单片机睡眠的方法很简单执行一条SLEEP指令就可以了如果看门狗允许的话WDT就会被清零但是还保持运行寄存器STATUS的PD位将会置0TO位将会置1IO口还保持原来的状态在睡眠状态下不能驱动振荡器了


有些事件可以将单片机从睡眠状态中唤醒:看门狗、RA口电平变化中断、外部复位引脚MCLK被拉低、RA2/int引脚沿中断、Timer1中断(必须工作在异步计数模式)、ECCP捕获模式中断、AD转换中断(时钟源必须为内部RC的时候)、比较器输出有变化这些事件能够将单片机唤醒其他的事件不能


如果某项能唤醒单片机的中断已经开了当总中断允许位GIE为1的时候单片机被唤醒后可以进入中断程序中去而当GIE位为0的时候单片机也可以被唤醒但是是执行下面的语句而不能进入中断程序中去


为了保证在执行SLEEP语句后看门狗能够清零最好在SLEEP语句之前加一句清看门狗的语句CLRWDT


相关型号资料:AT25020N-10SC27 MUX08FP IRFI9520G TS83C51RB2-MC



11. PIC单片机的一些电特性


VSS引脚的最大输出电流和VDD最大的输入电流为:90mA;

每个IO口的输出电流可达25mAIO口总共输出电流可达90mA;

每个IO口是由两个保护二极管上下钳位的.当电压超过VDD和VSS的时候二极管最大能承受20mA的电流;

IO口输入漏电流最大为±1uA引脚MCLR和OSC漏电流最大为±5uA;

PORTA内部弱上拉(若设置了此功能)电流最大为 400uA;

IO口输出低电平为0.6V输出高电压为VDD-0.7V;


12. 编程注意事项及技巧


在编程调试后和根据网上的一些资料和经验我注意到了一些在编程的事项和技巧通过这些设置可以使系统更加稳定的工作现在总结如下:


(1)

在设置端口的时候先将端口输出你想要预置的值以免发生出示状态的不稳定影响系统正常工作.虽然在当前还没有定义端口是输出还是输入状态这样做总是好的


(2)

在开启某个中断功能的时候最好将其中断标志位清一次零


(3)

在设计低功耗的时候其中有些功能是比较耗电的如果不用的话一定要将其关掉例如将IO口设置成输入并将其悬空就会很耗电流;RA口设置弱上拉的时候如果引脚接地电流会很大;欠压复位也是一个耗电大户而看门狗开启时用的时钟源为内部的RC不怎么耗电;AD转换耗电也不多


(4)

单片机里面的功能很多在有些功能不需要的时候一定要将其关闭(可以放在初始化程序之中)这样一来有利于程序的稳定性;二来可以省电因为开启某个功能总是要电来驱动的


(5)

如果一个寄存器被多种功能所共用建议只对相应位进行操作例如用BCF、BSF、或、异或、与、非等指令而不要整个的将其赋值以免弄错了使其他模块受到干扰。


> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

为进一步提高未成年人思想道德建设,丰富辖区少年暑期生活,打造睦邻友好学习型社区,天鹅湖社区联合天鹅湖畔小区业委会成立“青少年暑期阳光睦邻学习馆”。7月9日上午,第一节机器人单片机课程正式开课。

生成海报
点赞 0

钟, 广林

我还没有学会写个人说明!

相关推荐

PIC单片机学习方法

为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得

PIC单片机学习笔记

1.前言 为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的

[教程]第3课:单片机存储器结构

单片机内部存储结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢