PIC16F877A.H头文件详细注释
- 格式:doc
- 大小:97.50 KB
- 文档页数:10
第1章PIC16F877单片机实验板介绍美国微芯公司推出的CMOS 8位PIC系列单片机,采用精简指令集(RISC)、哈佛总线结构、2级流水线取指令方式,具有实用、低价、指令集小、简单易学、低功耗、高速度、体积小、功能强等特点,体现了单片机发展的一种新趋势,深受广大用户的欢迎,已逐渐成为单片机发展的新潮流。
PIC16F87X是微芯公司的中档产品。
它采用14位的类RISC指令系统,在保持低价格的前提下,增加了A/D转换器、内部E2PROM存储器、比较输出、捕捉输入、PWM 输出(加上简单的滤波电路后还可以作为D/A输出)、I2C总线和SPI总线接口电路、异步串行通信(USART)接口电路、模拟电压比较器、LCD驱动、FLASH程序存储器等许多功能,可以方便地在线多次编程和调试,特别适用于初学者学习和在产品的开发阶段使用;它也可以作为产品开发的终极产品。
微芯公司还将FLASH芯片做成与OTP芯片价格相近,以致可用FLASH芯片代替OTP芯片。
微芯公司的单片机是品种最丰富的单片机系列之一,被广泛地应用于各种仪器和设备中。
这种单片机具有如下显著的特点:开发容易,周期短:由于PIC采用类RISC指令集,指令数目少(PIC16F87X 仅35条指令),且全部为单字长指令,易学易用;相对于采用CISC(复杂指令集)结构的单片机可节省30 %以上的开发时间、2倍以上的程序空间。
高速:PIC采用哈佛总线和类精简指令集,逐步建立了一种新的工业标准,指令的执行速度比一般的单片机要快4~5倍。
低功耗:PIC采用CMOS电路设计,结合了诸多的节电特性,使其功耗很低;100 %的静态设计可进入休眠(Sleep)省电状态,而不会影响激活后的正常运行。
微芯公司的单片机是各类单片机中低功耗设计最好的产品之一。
低价实用:PIC配备有OTP(One Time Programmable)型、EPROM型及FLASH型等多种形式的芯片,其OTP型芯片的价格很低。
PIC16F877A定时器的学习由于实时数据的仿真需要用到定时器产生数据,今天晚上完成PIC16F877A 产生正弦波形,并将波形数据发送到上位机!这是一个三角波的仿真程序,并通过串口发送到上位机#include #include #include#include “main.h”#include“t232.h”#include“lcd.h”#include“timer.h”//define global variablebank1 uchar flag =0 ;//利用flag 判断中断时间是否到了!bank1 char dat[6] ;bank2 char str[]=“shan dong qing gong ye xue yuan”;bank2 char str1[]=“Starting........”;bank2 char str2[]=“Capturing.......”;bank2 char str3[]=“Stop..........” ;//bank2 float test = 0;//bank2 float t1 ;bank2 uchar t1 =0 ;bank2 uchar t2=0 ;bank1 uchar state = READY ;//当前状态bank1 uchar frame[3] ;//帧缓冲bank1 uchar temp ;//ms 级延时程序void DelayMS(uint ms){ uint i; while(ms--){ for(i=0;i//10us 级延时程序void Delay10US(uint us){ uchar i; for(i=0;iwhile(1) {while((t1>=-20)&&(state==CAPTURE)){t1++ ;sprintf(dat,”(%d)”,t1) ;send_str(dat);if(t1==20)break ;}while((t1}tips:感谢大家的阅读,本文由我司收集整编。
PIC16F877原理简介1.1 PIC16F877特性:PIC16F877是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。
如图1为PIC16F877的40根接脚图,PDIP是指一般最常见的DIP(Dual In Line Package)包装,而PIC单片机也有PLCC(Plastic Leaded Chip Carrier)与QFP(Quad Flat Package)两种形式的包装,依照不同的需求,寻找不同的包装形式。
如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟讯号,也可经由程序规划为数字输出输入接脚。
图1. PDIP40引脚PIC16F877接脚说明图2. PDIP28和SOIC28引脚PIC16F877接脚图说明图3. PLCC44引脚PIC16F877脚位图说明图4. QFP44引脚PIC16F877引脚图说明PIC16F877属于闪控式(Flash)单片机,可以重复烧录,其ROM的容量总共是8K words,以2K为一个page,区分为4个pages;内部RAM总共有512个字节(00f~1FFh),以128个字节为一个Bank,共区分为4个Bank,如图5所示,每个Bank的前半段都有其特殊用途,分别连接到其特殊功能模块,例如I/O、CCP、Timer、USART、MSSP等。
PIC16f877中文资料PIC16F877原理简介1.1 PIC16F877特性:PIC16F877是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。
如图1为PIC16F877的40根接脚图,PDIP是指一般最常见的DIP(Dual In Line Package)包装,而PIC单片机也有PLCC(Plastic Leaded Chip Carrier)与QFP(Quad Flat Package)两种形式的包装,依照不同的需求,寻找不同的包装形式。
如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟讯号,也可经由程序规划为数字输出输入接脚。
图1. PDIP40引脚PIC16F877接脚说明图2. PDIP28和SOIC28引脚PIC16F877接脚图说明图3. PLCC44引脚PIC16F877脚位图说明图4. QFP44引脚PIC16F877引脚图说明PIC16F877属于闪控式(Flash)单片机,可以重复烧录,其ROM 的容量总共是8K words,以2K为一个page,区分为4个pages;内部RAM总共有512个字节(00f~1FFh),以128个字节为一个Bank,共区分为4个Bank,如图5所示,每个Bank的前半段都有其特殊用途,分别连接到其特殊功能模块,例如I/O、CCP、Timer、USART、MSSP等。
PIC16F877A单片机是microchip公司的产品,它采用14位的RISC指令系统,内部集成了A/D转换器、EEPROM、模拟比较器、带比较和捕捉功能的定时器/计数器、PWM输出、异步串行通信电路等。
1.程序存储器程序存储器和堆栈PIC16F877A单片机内部具有8K×14位的Flash程序存储器,程序存储器具有13位宽度的程序计数器地址范围:0000H-1FFFH。
由程序计数器提供13条地址线进行单元选择,每个单元宽14位,即PIC16F877A的指令字节宽度为14位,能够存放一条PIC单片机系统指令。
在系统上电或其他复位情况下,程序计数器均从0000H地址单元开始工作。
如果遇到调用子程序或系统发生事件中断时,将把当前程序断点处的地址送入8级×14位的堆栈区域进行保护。
堆栈是一个独立的存储区域,在调用的子程序或中断服务程序执行完后,再恢复断点地址。
通过14位程序总线,取出对应程序之灵的机器码,送入指令存储器,将组成的操作码和操作数进行有效分离。
如果操作数为地址,则进入地址复用器;如果操作数为数据,则进入数据复用器。
而操作码将在指令译码和控制单元中转化为相应的功能操作。
PIC的多数指令均是顺序执行,即使条件跳转也是隔行间接跳转。
具有大范围转移功能的指令只有两条:无条件GOTO语句和调用子程序CALL语句。
但它们受到2KB范围的约束。
所以必须将整个程序存储器以2KB为单位进行分页。
PIC16F877A单片机的上电复位地址是0000H,中端口地址是0004H,中断产生时PC指针会自动指向该地址。
在进行中断应用时,特别是涉及多个中断同时打开时,必须要逐个对中断标志进行判断。
编程时,在0000H-0003H单元内要放置一条GOTO跳转指令,跳转到主程序,以避开0004H存储器单元。
2.数据存储器数据存储器PIC单片机的数据存储器与传统的MCS-51单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类。
PIC16F877A.H头文件详细注释/* Header file for the Microchip* PIC 16F873A chip* PIC 16F874A chip* PIC 16F876A chip* PIC 16F877A chip* Midrange Microcontroller*/#if defined(_16F874A) || defined(_16F877A)#define __PINS_40#endifstatic volatile unsigned char INDF @ 0x00; //间接寻址寄存器static volatile unsigned char TMR0 @ 0x01; //定时器0static volatile unsigned char PCL @ 0x02; //低8位程序计数器static volatile unsigned char STA TUS @ 0x03; //程序状态寄存器static unsigned char FSR @ 0x04; //特殊功能寄存器static volatile unsigned char PORTA @ 0x05; //端口A寄存器static volatile unsigned char PORTB @ 0x06; //端口B寄存器static volatile unsigned char PORTC @ 0x07; //端口C寄存器#ifdef __PINS_40static volatile unsigned char PORTD @ 0x08; //端口D寄存器static volatile unsigned char PORTE @ 0x09; //端口E寄存器#endifstatic unsigned char PCLATH @ 0x0A; //高5位程序计数器static volatile unsigned char INTCON @ 0x0B; //中断控制寄存器static volatile unsigned char PIR1 @ 0x0C; //中断标志寄存器PIR1static volatile unsigned char PIR2 @ 0x0D; //中断标志寄存器PIR2static volatile unsigned char TMR1L @ 0x0E; //低字节计数寄存器static volatile unsigned char TMR1H @ 0x0F; //高字节计数寄存器static volatile unsigned char T1CON @ 0x10; //TMR1控制寄存器static volatile unsigned char TMR2 @ 0x11; //定时/计数器TMR2static volatile unsigned char T2CON @ 0x12; //TMR2控制寄存器static volatile unsigned char SSPBUF @ 0x13; //收/发数据缓冲器static volatile unsigned char SSPCON @ 0x14; //同步串口控制寄存器,对MSSP模块的功能和指标进行设置和定义。
第1章PIC16F877单⽚机实验板介绍第1章PIC16F877单⽚机实验板介绍美国微芯公司推出的CMOS 8位PIC系列单⽚机,采⽤精简指令集(RISC)、哈佛总线结构、2级流⽔线取指令⽅式,具有实⽤、低价、指令集⼩、简单易学、低功耗、⾼速度、体积⼩、功能强等特点,体现了单⽚机发展的⼀种新趋势,深受⼴⼤⽤户的欢迎,已逐渐成为单⽚机发展的新潮流。
PIC16F87X是微芯公司的中档产品。
它采⽤14位的类RISC指令系统,在保持低价格的前提下,增加了A/D转换器、内部E2PROM存储器、⽐较输出、捕捉输⼊、PWM 输出(加上简单的滤波电路后还可以作为D/A输出)、I2C总线和SPI总线接⼝电路、异步串⾏通信(USART)接⼝电路、模拟电压⽐较器、LCD驱动、FLASH程序存储器等许多功能,可以⽅便地在线多次编程和调试,特别适⽤于初学者学习和在产品的开发阶段使⽤;它也可以作为产品开发的终极产品。
微芯公司还将FLASH 芯⽚做成与OTP芯⽚价格相近,以致可⽤FLASH芯⽚代替OTP芯⽚。
微芯公司的单⽚机是品种最丰富的单⽚机系列之⼀,被⼴泛地应⽤于各种仪器和设备中。
这种单⽚机具有如下显著的特点:开发容易,周期短:由于PIC采⽤类RISC指令集,指令数⽬少(PIC16F87X 仅35条指令),且全部为单字长指令,易学易⽤;相对于采⽤CISC(复杂指令集)结构的单⽚机可节省30 %以上的开发时间、2倍以上的程序空间。
⾼速:PIC采⽤哈佛总线和类精简指令集,逐步建⽴了⼀种新的⼯业标准,指令的执⾏速度⽐⼀般的单⽚机要快4~5倍。
低功耗:PIC采⽤CMOS电路设计,结合了诸多的节电特性,使其功耗很低;100 %的静态设计可进⼊休眠(Sleep)省电状态,⽽不会影响激活后的正常运⾏。
微芯公司的单⽚机是各类单⽚机中低功耗设计最好的产品之⼀。
低价实⽤:PIC配备有OTP(One Time Programmable)型、EPROM型及FLASH型等多种形式的芯⽚,其OTP型芯⽚的价格很低。
PIC16F877A单片机是microchip公司的产品,它采用14位的RISC指令系统,内部集成了A/D转换器、EEPROM、模拟比较器、带比较和捕捉功能的定时器/计数器、PWM输出、异步串行通信电路等。
1.程序存储器程序存储器和堆栈PIC16F877A单片机内部具有8K×14位的Flash程序存储器,程序存储器具有13位宽度的程序计数器地址范围:0000H-1FFFH。
由程序计数器提供13条地址线进行单元选择,每个单元宽14位,即PIC16F877A的指令字节宽度为14位,能够存放一条PIC单片机系统指令。
在系统上电或其他复位情况下,程序计数器均从0000H地址单元开始工作。
如果遇到调用子程序或系统发生事件中断时,将把当前程序断点处的地址送入8级×14位的堆栈区域进行保护。
堆栈是一个独立的存储区域,在调用的子程序或中断服务程序执行完后,再恢复断点地址。
通过14位程序总线,取出对应程序之灵的机器码,送入指令存储器,将组成的操作码和操作数进行有效分离。
如果操作数为地址,则进入地址复用器;如果操作数为数据,则进入数据复用器。
而操作码将在指令译码和控制单元中转化为相应的功能操作。
PIC的多数指令均是顺序执行,即使条件跳转也是隔行间接跳转。
具有大范围转移功能的指令只有两条:无条件GOTO语句和调用子程序CALL语句。
但它们受到2KB范围的约束。
所以必须将整个程序存储器以2KB为单位进行分页。
PIC16F877A单片机的上电复位地址是0000H,中端口地址是0004H,中断产生时PC指针会自动指向该地址。
在进行中断应用时,特别是涉及多个中断同时打开时,必须要逐个对中断标志进行判断。
编程时,在0000H-0003H单元内要放置一条GOTO跳转指令,跳转到主程序,以避开0004H存储器单元。
2.数据存储器数据存储器PIC单片机的数据存储器与传统的MCS-51单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类。
PIC16F877A 单片机为控制核心,用语音识别芯片RSC-364、射频发送模块F05C 、编码芯片PT2262 组成语音无线遥控器(用于对控制指令的采集);采用射频接收模块J05C 和解码芯片PT2272 组成无线接收模块(用于对控制指令的接收);采用三节干电池串联(约4.5V)的方式对系统供电的语音控制小车。
经试验证实小车能实现语音无线控制,根据事先录制的语音指令能够实现前进、退后和左右转。
通过自制的编码盘小车还附加有测速及路程显示功能。
经测试,小车反应灵敏,运行稳定。
关键词:语音控制;PIC16F877A;RSC -364;测速显示0 引言随着现代科技的发展,仪器产品的智能化已经是一个不可避免的趋势。
智能仪器在一些特殊的场合,它可以按照预先设定的模式在一个环境里自动的运作,基本不需要人为的管理。
本文设计的语音控制智能小车,就是这样的一种装置。
小车以PIC16F877A 单片机为控制核心,加上语音识别芯片RSC-364、射频发送模块F05C 、编码芯片PT2262 组成语音无线遥控器,并且采用射频接收模块J05C 和解码芯片PT2272 组成无线接收模块,实现小车和控制者的互动,小车能根据命令实现前进、后退和左右转等动作。
通过外围电路又可以实现自动测速并显示等功能。
1 小车整体框架及原理本设计语音控制小车系统主要由PIC16F877A 为核心的车载控器部分、遥控器携带语音控制部分两大控制单元和车体部分组成小车硬件控制系统结构示意图如下:图1 控制系统结构示意图1.1 车载控制单元车载控制部分包括无线接收电路(由射频接收模块J05C 和解码芯片PT2272 组成) 、车载主控芯片电路、电机驱动电路及测速显示电路。
工作流程:接收遥控器发出的无线电信号,解码后送入车载主控芯片,经过计算产生相应的控制信号,驱动两个电机工作,使小车产生预期的动作。
本设计使用了两个电机控制小车的动作,具体在驱动部分讲述。
PIC16F877A配置位中文说明PIC16F876A配置位中文说明PIC16F874A配置位中文说明PIC16F873A配置位中文说明Configuration BitsREGISTER14-1:CONFIGURATION WORD(ADDRESS2007h)bit13CP:Flash Program Memory Code Protection bit程序存储器保护位1=Code protection off保护位关闭可以读出代码0=All program memory code-protected保护位开启代码保护读出全0bit12Unimplemented:Read as‘1’未使用设置1bit11DEBUG:In-Circuit Debugger Mode bit在线调试模式位1=In-Circuit Debugger disabled,RB6and RB7are general purpose I/O pins在线调试关闭RB6和RB7通用IO端口0=In-Circuit Debugger enabled,RB6and RB7are dedicated to the debugger在线调试开启RB6和RB7调试专用端口bit10-9WRT1:WRT0Flash Program Memory Write Enable bits WRT0Flash程序存储器的写使能位For PIC16F876A/877A:11=Write protection off;all program memory may be written to by EECON control写保护关闭全部存储空间可通过EECON控制写入。
10=0000h to00FFh write-protected;0100h to1FFFh may be written to by EECON control0000h to00FFh写保护;0100h to1FFFh可通过EECON 控制写入01=0000h to07FFh write-protected;0800h to1FFFh may be written to by EECON control0000h to07FFh写保护;0800h to1FFFh可通过EECON 控制写入00=0000h to0FFFh write-protected;1000h to1FFFh may be written to by EECON control0000h to0FFFh写保护;1000h to1FFFh可通过EECON 控制写入For PIC16F873A/874A:11=Write protection off;all program memory may be written to by EECON control10=0000h to00FFh write-protected;0100h to0FFFh may be written to by EECON control01=0000h to03FFh write-protected;0400h to0FFFh may be written to by EECON control00=0000h to07FFh write-protected;0800h to0FFFh may be written to by EECON controlbit8CPD:Data EEPROM Memory Code Protection bit EEPROM存储器保护位1=Data EEPROM code protection off EEPROM存储器保护位关闭可读写0=Data EEPROM code-protected EEPROM存储器保护位关闭不可读bit7LVP:Low-Voltage(Single-Supply)In-Circuit Serial Programming Enable bit低电压(单电源)在电路中的串口编程使位1=RB3/PGM pin has PGM function;low-voltage programming enabled开启RB3端口PGM低电压编程功能0=RB3is digital I/O,HV on MCLRmust be used for programmingRB3数字I/O MCLR必须使用高编程电压才可以bit6BOREN:Brown-out Reset Enable bit欠压/掉电复位使能1=BOR enabled欠压/掉电复位功能开0=BOR disabled欠压/掉电复位功能关bit5-4Unimplemented:Read as‘1’未使用设置1bit3PWRTEN:Power-up Timer Enable bit上电延时使能1=PWRT disabled上电延时使能关0=PWRT enabled上电延时使能开bit2WDTEN:Watchdog Timer Enable bit看门狗定时使能1=WDT enabled看门狗定时使能开0=WDT disabled看门狗定时使能关bit1-0FOSC1:FOSC0:Oscillator Selection bits振荡器类型选择11=RC Resistor/Capacitor oscillator RC阻容振荡器10=HS High-Speed Crystal/Resonator oscillator高频率石英晶体振荡器4-20MHZ01=XT Crystal/Resonator oscillator石英晶体振荡器200k-4MHZ00=LPr Low-Power Crystal oscillato低功耗方案振荡器32-200khzLegend:R=Readable bit P=Programmable bit U= Unimplemented bit,read as‘0’-n=Value when device is unprogrammed u=Unchanged from programmed stateNote1:The erased(unprogrammed)value of the Configuration Word is3FFFh.。
;Digit clock;-----------------------------------------------;DA TE :20101205;Author:Tang HS;M C U :PIC16F877A;FileName : ClockPIC.ASM;-----------------------------------------------------------;Date: {2010/12/07.14:35}-V er01--CS-ICD:0xAFCE---ISP:0xb7ce----;功能: 1.LED显示:时分秒;格式:[ hh mm ss ] 备注:按键未定义;------------------------------------------------------------;-----------------------------------------------------------;Date: {2010/12/07.22:15}-V er01--CS-ICD:0xAFCE---ISP:0xb7ce----;功能: 1.LED显示:时分秒;格式:[ hh mm ss ] 备注:按键未定义; 2.RB0-SET_KEY;RB1-ADD_KEY;RB2-SUB_KEY;RB3-EXIT_KEY;------------------------------------------------------------;Date: {2010/12/09.18:06}-V er02--CS-ICD:0xAFCE---ISP:0xef0e----;************************************************************;Date: {2010/12/10.00:47}-V er03--CS-ICD:0xb08d---ISP:0xfaa7----;功能: 1.LED显示:时分秒;格式:[ hh mm ss ] 备注:按键未定义; 2.RB0-SET_KEY;RB1-ADD_KEY;RB2-SUB_KEY;RB3-EXIT_KEY 都OK ; 3.MOVLW 纠正MOVV REG,1 引起的SUB_不良;;--------------------------------------------------------------;Date: {2010/12/10.13:10}-V er03.1--CS-ICD:0xb08b---ISP:0xfaa4----; 4.时差。
PIC16F877A单片机是microchip公司的产品,它采用14位的RISC指令系统,内部集成了A/D转换器、EEPROM、模拟比较器、带比较和捕捉功能的定时器/计数器、PWM输出、异步串行通信电路等。
1.程序存储器程序存储器和堆栈PIC16F877A单片机内部具有8K×14位的Flash程序存储器,程序存储器具有13位宽度的程序计数器地址范围:0000H-1FFFH。
由程序计数器提供13条地址线进行单元选择,每个单元宽14位,即PIC16F877A的指令字节宽度为14位,能够存放一条PIC单片机系统指令。
在系统上电或其他复位情况下,程序计数器均从0000H地址单元开始工作。
如果遇到调用子程序或系统发生事件中断时,将把当前程序断点处的地址送入8级×14位的堆栈区域进行保护。
堆栈是一个独立的存储区域,在调用的子程序或中断服务程序执行完后,再恢复断点地址。
通过14位程序总线,取出对应程序之灵的机器码,送入指令存储器,将组成的操作码和操作数进行有效分离。
如果操作数为地址,则进入地址复用器;如果操作数为数据,则进入数据复用器。
而操作码将在指令译码和控制单元中转化为相应的功能操作。
PIC的多数指令均是顺序执行,即使条件跳转也是隔行间接跳转。
具有大范围转移功能的指令只有两条:无条件GOTO语句和调用子程序CALL语句。
但它们受到2KB范围的约束。
所以必须将整个程序存储器以2KB为单位进行分页。
PIC16F877A单片机的上电复位地址是0000H,中端口地址是0004H,中断产生时PC指针会自动指向该地址。
在进行中断应用时,特别是涉及多个中断同时打开时,必须要逐个对中断标志进行判断。
编程时,在0000H-0003H单元内要放置一条GOTO跳转指令,跳转到主程序,以避开0004H存储器单元。
2.数据存储器数据存储器PIC单片机的数据存储器与传统的MCS-51单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类。
//PIC16F877A.H头文件详细注释/* Header file for the Microchip* PIC 16F873A chip* PIC 16F874A chip* PIC 16F876A chip* PIC 16F877A chip* Midrange Microcontroller*/#if defined(_16F874A) || defined(_16F877A)#define __PINS_40#endifstatic volatile unsigned char INDF @ 0x00; //间接寻址寄存器static volatile unsigned char TMR0 @ 0x01; //定时器0static volatile unsigned char PCL @ 0x02; //低8位程序计数器static volatile unsigned char STA TUS @ 0x03; //程序状态寄存器static unsigned char FSR @ 0x04; //特殊功能寄存器static volatile unsigned char PORTA @ 0x05; //端口A寄存器static volatile unsigned char PORTB @ 0x06; //端口B寄存器static volatile unsigned char PORTC @ 0x07; //端口C寄存器#ifdef __PINS_40static volatile unsigned char PORTD @ 0x08; //端口D寄存器static volatile unsigned char PORTE @ 0x09; //端口E寄存器#endifstatic unsigned char PCLA TH @ 0x0A; //高5位程序计数器static volatile unsigned char INTCON @ 0x0B; //中断控制寄存器static volatile unsigned char PIR1 @ 0x0C; //中断标志寄存器PIR1static volatile unsigned char PIR2 @ 0x0D; //中断标志寄存器PIR2static volatile unsigned char TMR1L @ 0x0E; //低字节计数寄存器static volatile unsigned char TMR1H @ 0x0F; //高字节计数寄存器static volatile unsigned char T1CON @ 0x10; //TMR1控制寄存器static volatile unsigned char TMR2 @ 0x11; //定时/计数器TMR2static volatile unsigned char T2CON @ 0x12; //TMR2控制寄存器static volatile unsigned char SSPBUF @ 0x13; //收/发数据缓冲器static volatile unsigned char SSPCON @ 0x14; //同步串口控制寄存器,对MSSP模块的功能和指标进行设置和定义。
static volatile unsigned char CCPR1L @ 0x15; //捕获/比较/PWM寄存器低字节static volatile unsigned char CCPR1H @ 0x16; //捕获/比较/PWM寄存器低字节static volatile unsigned char CCP1CON @ 0x17; //CCP1CON寄存器static volatile unsigned char RCSTA @ 0x18; //USART接收控制兼状态寄存器static volatile unsigned char TXREG @ 0x19; //USART发生缓冲器static volatile unsigned char RCREG @ 0x1A; //USART接收缓冲器static volatile unsigned char CCPR2L @ 0x1B; //捕获/比较/PWM寄存器低字节static volatile unsigned char CCPR2H @ 0x1C; //捕获/比较/PWM寄存器低字节static volatile unsigned char CCP2CON @ 0x1D; //CCP2CON寄存器static volatile unsigned char ADRESH @ 0x1E; //ADC转换结果寄存器高字节static volatile unsigned char ADCON0 @ 0x1F; //A/D转换器开关位。
/* bank 1 registers */static unsigned char bank1 OPTION @ 0x81; //选择寄存器,用于配置TMR0/WDT预分频系数、外部INT中断、TMR0和端口B的弱上拉。
static volatile unsigned char bank1 TRISA @ 0x85; //A口方向寄存器static volatile unsigned char bank1 TRISB @ 0x86; //B口方向寄存器static volatile unsigned char bank1 TRISC @ 0x87; //C口方向寄存器#ifdef __PINS_40static volatile unsigned char bank1 TRISD @ 0x88; //D口方向寄存器static volatile unsigned char bank1 TRISE @ 0x89; //E口方向寄存器#endifstatic volatile unsigned char bank1 PIE1 @ 0x8C; //中断允许寄存器PIE1static volatile unsigned char bank1 PIE2 @ 0x8D; //中断允许寄存器PIE2static volatile unsigned char bank1 PCON @ 0x8E; //电源控制状态寄存器static volatile unsigned char bank1 SSPCON2 @ 0x91; //MSSP控制寄存器2static volatile unsigned char bank1 PR2 @ 0x92; //TMR2周期寄存器static volatile unsigned char bank1 SSPADD @ 0x93; //同步串口地址寄存器static volatile unsigned char bank1 SSPSTA T @ 0x94; //同步串口状态寄存器static volatile unsigned char bank1 TXSTA @ 0x98; //USART发生控制兼状态寄存器static volatile unsigned char bank1 SPBRG @ 0x99; //USART波特率发生器初值寄存器static volatile unsigned char bank1 CMCON @ 0x9C; //比较控制寄存器static volatile unsigned char bank1 CVRCON @ 0x9D; //比较电压参考控制寄存器static volatile unsigned char bank1 ADRESL @ 0x9E; //ADC转换结果寄存器低字节static volatile unsigned char bank1 ADCON1 @ 0x9F; //ADC控制寄存器ADCON1/* bank 2 registers */static volatile unsigned char bank2 EEDA TA @ 0x10C; //EEPROM数据寄存器低字节static volatile unsigned char bank2 EEADR @ 0x10D; //EEPROM地址寄存器低字节static volatile unsigned char bank2 EEDA TH @ 0x10E; //EEPROM数据寄存器高字节static volatile unsigned char bank2 EEADRH @ 0x10F; //EEPROM地址寄存器高字节/* bank 3 registers */static volatile unsigned char bank3 EECON1 @ 0x18C; //EEPROM控制寄存器1static volatile unsigned char bank3 EECON2 @ 0x18D; //EEPROM控制寄存器2//* STA TUS bits状态寄存器*/static volatile bit IRP @ (unsigned)&STA TUS*8+7; //寄存器bank选择位(用于间接寻址)。
0:bank0,1;1:bank2,3static volatile bit RP1 @ (unsigned)&STA TUS*8+6; //寄存器bank选择位(用于直接寻址)。
PR1:PR0:00:BANK0;01:BANK1;10:BANK2;11BANK3.static volatile bit RP0 @ (unsigned)&STA TUS*8+5; //static volatile bit TO @ (unsigned)&STA TUS*8+4; //超时位。
0:WDT超时发生;1:上电后,执行了CLRWDT或者SLEEP指令static volatile bit PD @ (unsigned)&STA TUS*8+3; //掉电标志位。
0:执行完SLEEP指令;1:上电后或者执行CLRWDT指令static volatile bit ZERO @ (unsigned)&STA TUS*8+2; //零标志位。
0:算术或逻辑操作结果不为0;1:反之。
static volatile bit DC @ (unsigned)&STA TUS*8+1; //数字进位/退位标志位。
0:结果的低4位没有发生进位;1:反之。
static volatile bit CARRY@ (unsigned)&STA TUS*8+0; //进位/退位标志位。