单片机入门不难------谈PIC系列
- 格式:pdf
- 大小:195.53 KB
- 文档页数:14
第一章PIC系列单片机概述1.1 PIC单片机简单介绍1.2 PIC单片机的特点PIC 是美国Microchip 公司所生产的单片机系列产品型号前缀,其硬件系统设计简洁,指令系统设计精炼。
它是最容易学、最容易掌握、最容易应用的单片机之一。
●(1)哈佛总线结构●普通单片机----普林斯顿体系结构其程序存储器和数据存储器统一编址,也就是两种存储器位于同一个逻辑空间里。
其指令总线和数据总线是共用的即时分复用。
●●PIC单片机采用哈佛体系结构其程序存储器和数据存储器独立编址,也就是两种存储器位于不同逻辑空间里。
(MCS-51采用哈佛体系结构,但他们与CPU之间传递信息必须共用一条总线。
)PIC单片机还采用哈佛总线结构:及芯片内部将数据总线和指令总线分离,并且采用不同的宽度。
如图1-2(a)●(2)指令字节化指令字节和数据字节分别用不同的字节宽度代表。
图1.2 架构比较●(3)精简指令集(RISC)技术(单片机所能识别的所有指令的集合)●PIC的指令系统或指令集约有75条指令。
MCS-51有111条。
●(4)寻址方式简单,寻址空间独立寻找操作数的方式PIC只有4种即寄存器直接寻址、寄存器间接寻址、立即数寻址、和位寻址。
MCS-51有7种方式。
PIC程序、数据、堆栈各自采用独立的地址空间。
●(5)代码压缩率高,运行速度高,功耗低,驱动能力强。
●端口吸入电流:25mA,输出电流:20mA 一般驱动能力60~70mA●代码压缩率指相同程序存储器空间所能容纳有效指令的数量。
例如1KB程序存储量空间,MCS-51系列存放500多条指令,而对PIC系列单片机存放多达1024条。
●(6)I2C 和SPI串行总线结构I2C :Inter IntegratedCircuit SPI:Serial Peripheral Interface 分别是由PHILIPS MOTOROLA 公司发明的两种串行总线技术,是在芯片之间实现同步串行数据传输的技术1.3 PIC18系列的内部结构1.4 几种常见的PIC18系列单片机微控制器(单片机):将中央处理器CPU、随机存取存储器RAM、只读存储器ROM、输入/输出端口I/O等主要的计算机部件,都集成在一块集成电路芯片上,从而形成一部完整的微型计算机。
单片机入门不难------谈PIC系列话说人间事物的学习,不外两类:一类入门易,精通难比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。
另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。
单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。
但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。
本故事说给一点也不懂计算机,甚至数字电路的引引道。
一般入门应该有保障。
改为: 本故事说给懂电工、电子、逻辑电路的老家伙和半老家伙,如果对电子一窍不通人讲那我劝你也别瞎子点灯了,要是边讲基础边讲pic这书就不知唱到何年何月啦。
单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。
安排它就先的认识它,熟悉它请看图101.jpg.JPG (13.22 KB)这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。
第1、8条腿接电源+5V 和地线。
头两条腿是螃蟹钳子,好吃的很。
现在剩下了6 条腿第2、3条腿使用时外接一个叫晶振的东西我们接一个4 MHz的。
第4条腿是复位脚,是一个信号输入脚。
单片机正常运行时接高电平。
当有一个低电平脉冲输入到这个脚时单片机就复位。
所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。
例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个负脉冲,系统就复位了,led灯就熄灭了,程序从头开始。
以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界上比较简单的单片机-----PIC12CE519轮到第5条腿了,这条叫单片机的I/O脚。
就是输入输出脚。
你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。
pic单片机原理与接口技术PIC(Peripheral Interface Controller)单片机是一种广泛应用于嵌入式系统和微控制器应用的微处理器。
它由Microchip Technology(前身为General Instrument)开发,并具有低成本、低功耗、高性能和丰富的外设接口等特点。
下面将介绍PIC单片机的原理和接口技术。
1. 原理:- CPU(Central Processing Unit):PIC单片机的核心是其CPU,用于执行指令和控制系统的操作。
CPU包括ALU(算术逻辑单元)、寄存器、时钟和控制单元等组件。
- 存储器:PIC单片机具有多种类型的存储器,包括程序存储器(Flash ROM)用于存储程序代码,数据存储器(RAM)用于存储变量和临时数据,以及EEPROM用于非易失性数据存储。
- 外设接口:PIC单片机提供了多种外设接口,包括数字输入/输出端口(GPIO),模拟输入/输出端口(ADC和DAC),串行通信接口(USART、SPI、I2C)等。
这些接口使PIC单片机能够与其他设备进行通信和交互。
- 时钟系统:PIC单片机需要时钟信号来同步其操作。
它可以使用外部晶振或内部时钟源,具体取决于型号和应用需求。
2. 接口技术:- 数字输入/输出(GPIO):PIC单片机具有多个GPIO 引脚,可用于输入和输出数字信号。
通过配置引脚的工作模式(输入或输出)和状态(高电平或低电平),可以实现与外部设备的数字通信。
- 模拟输入/输出(ADC和DAC):PIC单片机具有模拟输入和输出功能,用于处理模拟信号。
ADC(模数转换器)用于将模拟输入信号转换为数字形式,而DAC(数模转换器)用于将数字信号转换为模拟输出信号。
- 串行通信接口:PIC单片机支持多种串行通信接口,如USART、SPI和I2C。
这些接口可用于与其他设备(如传感器、显示器、存储器等)进行数据交换和通信。
- 定时器和计数器:PIC单片机配备了多个定时器和计数器,可用于测量时间、生成精确的时序信号和执行定时操作。
PIC系列单⽚机⼊门简介51系单⽚机的对⽐PIC单⽚机的特点1. I/O⼝具有20mA的驱动能⼒(可以直接驱动LED发光)2. 8路, 10位的AD转换3. I2C, SPI, USART, USB, CAN接⼝4. WDT(看门狗)5. CCP(脉冲 / 捕捉 / ⽐较)6. 内置EEPROM7. 3路定时器8. 多种中断源9. ⽀持休眠的低功耗模式10. 流式并⾏接⼝11. 内置LCD控制器12. 芯⽚加密PIC16F877A存储资源8K * 14位的FLASH程序存储器368 * 8位数据存储器RAM256 * 8位EEPROM存储模块特殊功能寄存器SFR(Special Function Register)特殊功能寄存器是单⽚机中各功能部件对应的寄存器,⽤于存放相应功能部件的控制命令,状态或数据。
学单⽚机主要就是学习特殊功能寄存器的使⽤。
指令集使⽤RISC(Reduced Instruction Set Computer-RISC)精简指令集计算集的PIC单⽚机,只有35条指令,常⽤的约20条。
好学,易⽤,绝⼤多数位单周期指令,执⾏速度快。
⽽使⽤CISC(Complex Instruction Set Computers)复杂指令集计算集的MCS-51系列单⽚机指令有111条指令。
PIC单⽚机寻址⽅式1. 寄存器间接寻址2. ⽴即数寻址3. 直接寻址4. 位寻址PIC单⽚机引脚PIC16F877A单⽚机引脚1. VSS, VDD为电源和地线引脚(图上由于是仿真,隐藏了这两个脚)2. 13 | 14为时钟振荡器输⼊/输出引脚3. 1为复位信号和编程输⼊引脚4. 输⼊/输出端⼝和第⼆,第三功能引脚PIC与51单⽚机的对⽐PIC系列MCS-51系列寻址⽅式个数4个7个1K字节的储存器指令条数1024条指令600条指令。
PIC单片机入门教程V1.1PIC单片机入门教程一、简单介绍本文档主要介绍PIC单片机开发环境的建立、集成开发环境使用方法、简单示例程序说明、PIC单片机开发注意事项等。
ZC-ADK开发板作为Android外设开发套件(Accessory Developer Kit)时,提供两种与Android手机通信的方法,分别是USB和蓝牙通信,如果使用ZC-ADK做USB 外设开发时,只需支持USB Accessory的Android手机;如果使用ZC-ADK做蓝牙外设开发时,需要添加ZC-BLUE模块。
1.所需硬件:ZC-ADK开发板开发板数据线2.所需软件:集成开发环境:MPLAB_IDE_8_50,将代码编辑、编译、调试等功能集成于图形界面下的应用程序。
C编译器:MPLAB C30,用于将C源文件进行编译,生成汇编语言文件,并将编译器产生的文件与其他目标文件与库文件进行汇编和链接,产生最终的应用程序。
应用程序库:microchip-application-libraries,PIC单片机的应用程序库文件,包含图形、USB、Android外设等应用程序库。
程序下载:HIDBootloader,用于通过USB下载编译好的应用程序。
二、MPLAB IDE 8.50安装1.将MPLAB_IDE_8_50.zip解压缩,双击setup.exe开始安装,出现图2-1界面,点击NEXT继续。
图2-12.出现图2-2界面,选择I accept,点击Next图2-23.出现图2-3所示界面,选择Complete,点击Next。
图2-34.出现图2-4界面,选择安装目录,点击Next。
图2-45.出现图2-5界面,选择I accept,点击Next。
图2-56.出现图2-6界面,选择I accept,点击Next。
图2-67.出现图2-7界面,点击Next,开始安装。
图2-78.出现图2-8界面,询问现在是否安装HI-TECH C编译器,选择否。
PIC单片机大总结什么是PIC单片机?PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。
一种具有分散作用(多任务)功能的CPU。
与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。
PIC 单片机是一个小的计算机PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。
然而,处理能力—存储器容量却很有限,这取决于PIC的类型。
但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。
时钟频率与扫描程序的时间和执行程序指令的时间有关系。
但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。
如果是同样的体系结构,时钟频率较高的处理能力会较强。
这里用字来解释程序容量。
用一个指令(2*)表示一个字。
通常用字节(3*)来表示存储器(4*)容量。
一个字节有8位,每位由1或0组成。
PIC16F84A单片机 的指令由14位构成。
当把1K个子转换成位为:1 x 1,024 x 14 = 14,336位。
再转换为字节为:14,336/(8 x 1,024) = 1.75K。
在计算存储器的容量时,我们规定 1G 字节 = 1,024M 字节, 1M 字节 = 1,024K 字节, 1K 字节= 1,024 字节. 它们不是以1000为倍数,因为这是用二进制计算的缘故。
1. 计算机的物理结构,包括组织结构、容量、该计算机的CPU、存储器以及输入输出设备间的互连。
经常特指CPU的组织结构,包括它的寄存器、标志、总线、算术逻辑部件、指令译码与执行机制以及定时和控制部件。
2. 指出某种操作并标识其操作数(如果有操作数的话)的一种语言构造3. 作为一个单位来操作(运算)的一个二进制字符串,通常比计算机的一个字短。
4. 处理机内的所有可寻址存储空间以及用于执行指令的其它内存储器。
在计算存储器的容量时,我们规定 1G 字节 = 1,024M 字节, 1M 字节 = 1,024K 字节, 1K 字节= 1,024 字节. 它们不是以1000为倍数,因为这是用二进制计算的缘故。
PIC单片机基础教程PIC 单片机基础教程第一章PIC 系列单片机结构原理目前在全世界,利用单片机设计的嵌入式系统带来的工业年产值已超过几万亿美元。
在美国,但是使用嵌入式电脑的全数字电视产品预计每年将产生超过1500亿美元的于世界市场,我国的占有率好不到1 % 。
这说明单片机应用早我国才刚刚起步,有着广阔的前景。
因此,培养单片机应用人才,特别是在大学和中等专业学校相关专业中普及单片机知识,有着重要现实意义。
1.1单片机概述微型计算机是一种以电子器件为基础,可以介入输入信息,并能够对各种输入的数字化信息进行算术和逻辑运算,最后产生输出的电子设备。
微型计算机机油快速运算能力,又有极强的逻辑判断能力和的容量存储功能,是20世纪人类最卓越的发明之一,而单片微型计算机就是将CPU 、RAM、ROM、定时器/计数器和多种接口都集成到一块集成电路芯片上的尖端武器和日常生活中最广泛使用的计算机。
近年来,单片机得到突飞猛进的发展,已经完全深入到了人们的生活和工作的各个方面。
单片机的发展过程和性能的日益完善,实际上是对传统控制技术的一场革命,开创了为控制技术的新天地,现代控制系统的核心内涵就是嵌入式计算机应用系统(MCU),而单片机就是最典型、最广泛和最普及的嵌入式计算机应用系统。
可以毫不夸张地说,在现代化的设备中,单片机无处不在,如电信、家用电器、工业控制、仪器仪表、汽车和玩具等;单片机也比比皆是,如自动调台收音机、VCD、遥控空调、微波炉、智能玩具、人体秤和心电监护仪等。
随着科技的发展,单片机必将在更多的方面发挥作用。
目前,全世界各大公司的单片机品种已经形成多个系列,同一系列的单片机在软件和硬件方面有很大的相同之处。
例如,PIC16F87X 系列单片机有着相同的内核、相同和兼容的指令系统。
各种单片机在其内部所处理的对象都是用二进制数表示的信息,因此在学习单片机原理之前,首先要了解二进制数和二进制编码。
1、1、1 二进制数和编码1 计算机中的二进制数字的表示,有二进制、十进制和十六进制等。
PIC单片机新手快速入门为了给前一段时光学习16F616型的一个总结和便利大家的沟通,专家写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希翼大家能准时的赋予订正和批判,提出珍贵的看法. 1.PIC单片机的概述 PIC16F616是一款14引脚、8位的单片机.采纳精简命令集,仅有35条命令,因为采纳了数据和命令总线分别的哈佛总线结构,使得除少量命令不是单周期之外,大部分的命令都是单周期命令.这样有利于提高单片机的运行速度和执行效率. PIC16F616这款单片机供电可以在2V到5.5V之间,内部集成了一个RC,频率可以配置成8MHZ或者4MHZ,也可以用外部晶振提供时钟.内部集成有AD转换、等硬件模块,还具有上电复位、欠压复位、、代码庇护等功能.三个定时器、发生器等可以由用户编程.下面我来一一介绍关于PIC单片机的这些模块和功能. 2.存储器 PIC16F616分为程序存储其和数据存储器,程序存储器的大小是2048words,数据存储器的大小是128bytes. 程序存储器中0000H的地址为复位地址,当上电或者看门狗计时器等复位的时候,均会导致PC指针指向复位地址.地址0004H为中断地址,当无论发生什么中断的时候,PC指针就会指向此地址.在地址0005H~07FFH可以移植程序. 数据存储器分为两个部分,分离叫做bank0和bank1,其中bank0的地址范围为:00H-7FH,Bank1的地址范围为80H-FFH.普通的寄存器都放在里面.可以通过寄存器STATUSL里面的RP0位来挑选bank0和bank1. 在编程序的时候要注重的是,当你要操作的寄存器在bank0的时候,先要挑选bank0(将寄存器STATUS的RP0位置0),然后再对你所要操作的寄存器举行操作,当你要操作的寄存器在bank1的时候,同理先要挑选bank1. 假如想要定义一些变量,可以在数据存储器20H开头的地址定义,定义的地址范围为20H-7FH.普通这么多就够用了. 3.PIC的输入输出端口在学习这个部分的时候,曾经碰到过一些问题.PIC单片机的引脚不多,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在配置端口的时候,第1页共3页。
PIC学习心得本次心得为PIC18F25K22上的代码零、配置CPU 的特殊功能,地址从300000开始,如以下,有晶振选择,复位功能,看门狗配置,调试口rb7-rb6的配置,因为RB6-RB7为串口2的端口,需要对应为位=1才能使得他们可以用于普通io,其实单片机默认也是1.对于已经用于特殊功能的引脚,比如已经配置了引脚为I2C功能,如果要配置为普通IO时,需要将I2C失能掉,SSPXCON1=0X00;这样才能正常使用这2个IO口了如果要使单片机使用内部晶振,就需要将对应的OSCCON位置1IRCF<2:0>:内部RC 振荡器频率选择位(2)IRCF<2:0>=111 = HFINTOSC – (16 MHz)OSTS=0 = 器件依靠内部振荡器(HFINTOSC、MFINTOSC 或LFINTOSC)运行OSCCON2默认使用内部晶振时,频率会随温度漂移,使用波特率的时候要注意了,最好使用外部晶振PWDX默认,使外围功能使能#pragma romdata CONFIG1H=0x300001 //晶振const rom unsigned char config1H = 0x0a; //setting for HS oscillator中档功耗#pragma romdata CONFIG2L=0x300002 //复位const rom unsigned char config2L = 0x00;#pragma romdata CONFIG2H=0x300003const rom unsigned char config2H = 0x1e; //WDT#pragma romdata CONFIG3H=0x300005//配置一些端口的映射const rom unsigned char config3H = 0x00; //禁用复位脚,开始为CPU提供时钟而无需等待#pragma romdata CONFIG4L=0x300006//最高位为1,RB6 和RB7用于普通IO 口const rom unsigned char config4L = 0x80; //RB6 和RB7专用于在线调试#pragma romdata一、中断配置,PIC只有高低2个优先级,对应的函数有2个,函数地址为0X08和0X18中断配置,一下为高低优先级配置RCONbits.IPEN=1;//使能中断优先级,如果IPEN配置为0,没有中断优先级,所有优先级都为高,调到0x08地址的中断INTCONbits.GIE=1;//=允许所有高优先级中断INTCONbits.PEIE=1;//=允许所有低优先级的中断2、中断函数写法高优先级地址为0X08#pragma code InterruptVectorHigh = 0x08void InterruptVectorHigh (void){_asmgoto InterruptHandlerHigh //jump to interrupt routine,goto之后的InterruptHandlerHigh函数名可以自己取名_endasm}// High priority interrupt routine#pragma code#pragma interrupt InterruptHandlerHigh //InterruptHandlerHigh函数名可以自己取名void InterruptHandlerHigh()//中断函数内容低优先级函数地址为0X18#pragma code InterruptVectorLow= 0x18void InterruptVectorLow (void){_asmgoto InterruptHandlerLow //jump to interrupt routine,goto之后的InterruptHandlerHigh函数名可以自己取名_endasm}// High priority interrupt routine#pragma code#pragma interruptlow InterruptHandlerLow //InterruptHandlerHigh函数名可以自己取名void InterruptHandlerLow(void) //中断函数内容3、例如串口中断配置:IPR1bits.RC1IP=0; //设为低优先级,让他跳入低优先级中断函数,为1将跳入高优先级函数PIR1bits.RC1IF=0; //清中断标志PIE1bits.RC1IE=1; //接收中断允许PIE1bits.TX1IE=0; //发送中断禁止4、这样配置完成后,如果串口其他寄存器配置无误,接收到数据后就会跳入低优先级函数InterruptHandlerLow中二、ADC1、ADC采集为了不浪费MCU资源,不用中断函数来采集配置如下,(1)先将要用于ADC采集的IO口配置为输入(2)将对应IO扣配置为ADC输入(3)配置ADCON0-3寄存器TRISA|=0x01;//引脚方向寄存器,1输入,0输出。
单片机入门不难------谈PIC系列单片机入门不难------谈PIC系列作者:佚名来源:不详录入:Admin更新时间:2008-7-2716:27:15点击数:3【字体:】单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山)坛子里的老兄小弟,如果你已经多次想进单片机之门而未入,如果你有很多空闲时间想打发,如果你玩收音机感到疲劳想换个口味,如果。
那就听小弟我白话白话,反正我们这些老大难也没有什么重要的事情做。
闲言少许,话说人间事物的学习,不外两类:一类入门易,精通难比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。
另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。
单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。
但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。
本故事说给一点也不懂计算机,甚至数字电路的引引道。
一般入门应该有保障。
改为:本故事说给懂电工、电子、逻辑电路的老家伙和半老家伙,如果对电子一窍不通人讲那我劝你也别瞎子点灯了,要是边讲基础边讲pic这书就不知唱到何年何月啦。
单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。
安排它就先的认识它,熟悉它请看图1这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。
第1、8条腿接电源+5V和地线。
头两条腿是螃蟹钳子,好吃的很。
现在剩下了6条腿第2、3条腿使用时外接一个晶振的东西我们接一个4MHz的。
第4条腿是复位脚,是一个信号输入脚。
单片机正常运行时接高电平。
当有一个低电平脉冲输入到这个脚时单片机就复位。
所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。
例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。
以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519轮到底几条腿啦?奥是第5条腿,这条叫单片机的I/O脚。
就是输入输出脚。
你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。
所以,他的工作状态有四种:输入0,输入1,输出0,输出1剩下的两条腿和第5脚功能一个样。
原来编辑帖子是有时间限制的阿。
也好,俺学乖了,先在记事本上编辑,在复制粘帖。
欢迎各位捧场,在此不敢以讲课回答问题的姿态出现,不过各位的问题我尽力而为。
上边我们已经把8条腿消化掉了,其实我们要弄明白的也就3只腿,我们再简单一些,先整明白两条腿,即GP0,GP1.这两条腿低级一点的用法,可以控制继电器,LED灯,高级一些的用法可以进行I2C总线,RS232总线的通信,作为扩展输入可以模拟出来A/D 转换器(6--7bit),可以测量一个电阻的粗略值。
作为输出也可以直接推动扬声器奏出音乐。
这是后话暂且不提。
现在要控制使用这两只腿,我这个三脚猫功夫的说书的不得不讲一下软件了,要想讲明白软件又不得不涉及到单片机的内部结构。
那位说啦,你可别提这软件和结构了,以前俺就是让它们打败的,现在听到这个心里就打鼓。
嘿嘿,不要紧,果真如你所说,那你就不妨跟着我再失败一次,反正吗多一次失败又不纳税,嘿嘿。
不过你也要有思想准备,彻底弄明白是个渐进的过程。
要说这程序和单片机内部结构,还真是老大难,不过蟹黄蟹肉都可都在里面。
我现在要是给你说PIC单片机是哈佛结构的,51系列是冯-诺伊曼结构的,恐怕你要立马扎走人了。
所以我得用点心思不让你溜号。
好在PIC系列的制造商(microchip微芯公司美国)理解我等苦衷,全部只有35条指令,而且有一些指令我们一般很少使用,常用的也就十几句,用的时候查手册,无需记忆。
就算我们两天学习一句,也就两三个月时间,总比到老了还怕它们强啊。
废话少说先看下面的两个例语:my_name006:MOVlw02h'常数2进入wMOVwf GPIO'W的数进入寄存器GPIO这就是我们编的程序里的两个句子,也叫源程序。
有以下特点每行只能写一句话每句话由四部分组成:标号:操作指令操作数'程序注释下面我结合例子把这四部分解释一下。
第一部分my_name006:叫做标号,它是由字母或数字组成,由冒号结束。
标号可有可无,比如第二句就没有标号。
第二部分MOVlw叫做操作指令。
它是必须有的,不能省略。
PIC系列的单片机共有35条指令。
第三部分02h叫做操作数。
有的指令没有操作数或者操作数是默认的,也不用写。
第四部分是程序注释,必须以单引号开头,主要作用是提醒和备忘。
注释也是可有可无。
第二个例句中,省略了标号,当然注释也可以省略。
他的指令是MOVwf,操作数是GPIO。
操作数不一定是数字,也可能是一个由字母组成的字符串。
知道了语句格式以后,我们下面就学习一些常用语句。
我们先把这两个例句弄清楚。
这两句话的作用是把2这个常数写入到GPIO这个寄存器里。
单片机里有一些部件需要我们使用和操作,都是通过读写寄存器来实现的。
每个部件都对应有操控它的寄存器,例如我们要控制使用的管脚GP0,GP1这两个管脚对应的寄存器就叫做GPIO。
对GPIO寄存器读操作,实际等效察看管脚电平的高低;对GPIO寄存器相应的位写1操作,实际等校让管脚输出高电平。
写0,输出低电平。
每个寄存器可以储存一个八位的二进制数。
这八个位的每个位都有名称,从左向右的名称是:左端第首位名称叫D7,左端第二位名称叫D6,左端第三位名称叫D5,左端第四位名称叫D4,左端第五位名称叫D3,左端第六位名称叫D2,左端第七位名称叫D1,最后一位叫D0,而每一个位对应一个管脚的电平,例如当GPIO寄存器的D0位等于1时表示管脚GP0的电平是高电平。
D0位等于0时表示管脚GP0的电平是低电平。
常数2的八位二进制表示是“00000010”所以,GPIO寄存器存放的8位2进制数的每个位的值以及管脚电平是:D7对应于内部总线管脚的电平D7=0内部总线管脚输出低电平D6对应于内部总线管脚的电平D6=0内部总线管脚输出低电平D5对应于GP5管脚的电平D5=0GP5管脚输出低电平D4对应于GP4管脚的电平D4=0GP4管脚输出低电平D3对应于GP3管脚的电平D3=0GP3管脚输出低电平D2对应于GP2管脚的电平D2=0GP2管脚输出低电平D1对应于GP1管脚的电平D1=1GP1管脚输出低电平D0对应于GP0管脚的电平D0=0GP0管脚输出低电平GP0---GP5管脚我们可以从上一讲的图1硬件中查出所对应的管脚。
d7d6对应的内部时钟和数据总线我们现在暂且不要管它。
以后本事大了在调教它们。
在我们的例句中,向GPIO 寄存器写入了2,常数2的八位二进制表示是“00000010”因此如果此时GP0,Gp1等都已经被定义成输出的话,那么GP1输出高电平(接LED灯亮),GP0输出低电平(所接led灯熄)。
截止到现在,你已经学会如何控制管脚的电平高低了。
尽管还有一些疑问,比如怎样定义管脚为输出脚(以后会说),我得说如果事先gp1,gp0这两个管脚处于输入状态,这两个例句无效,是控制不了电平的。
无论如何,这一会儿,你就学会了两个指令,35条我看也没啥难的。
'------------------------------------------------------------------------------再加深一下对寄存器的认识:要把一个常数存储到,或者说写到一个寄存器中,仅用一条指令是办不到的,必须通过一个特殊的寄存器W,把数据倒过去.这就应该使用到两个语句。
MOVlw02H指令的意思是把一个常数存入特殊寄存器W,这个常数是3,后面的H是表示十六进制MOVwf GPIO指令的意思是把特殊寄存器W的数值存入寄存器.这个寄存器的名称是GPIO这里涉及到两个概念,常数和寄存器.常数好说,比如说十进制数35,26但要注意,在单片机系统里我们一般不用十进制,而使用十六进制.有关数制转换方面的知识,是计算机的基础,必须会熟练地在二进制、十六进制、十进制之间转换,我就不罗索了.寄存器也叫单片机的内存。
一个寄存器可以存储的数值范围是0--255,用十六进制表示就是0---FFH.用二进制表示就是00000000----11111111.以后要养成习惯用十六进制表示数.那么,一个单片机里有多少个这样的寄存器哩,pic12ce512里面有1024个这样的寄存器可以供你使用,为了使用方便生产商已经给它们编上了号码,第一号码是000H,往下依照次序为001H,002H........3FFH.(怎么样,开始用十六进制说事了吧,如果你不熟悉熟制转换赶紧补课来得及)有了编号就像我们居住的房间有了房间号码,使用就方便的多了.房间号码在邮政行业叫地址,因此我们称这些号码叫做寄存器地址,或称地址数例如名称为GPIO的寄存器,他的地址,或地址数是06H。
所以我们的两个例句完全等同于:my_name006:MOVlw02h'常数2进入wMOVwf06H'W的数进入寄存器GPIO'-----------------------------------------有两个寄存器比较特殊,它们没有地址,一个名字叫做W,另一个叫做TRIS.所以他们两个在存储数据的时候比较快,一个指令就可以解决问题,例如:MOVlw03H一条指令就把常数3写入到W寄存器了。
关于TRIS寄存器,我们以后用到它再说.除了他们两个以外的其他所有寄存器,在写入数据时一般都要用两条指令进行。
今天就扯到这里,虽然只有两个指令,但主要目的是要同学们接触一下指令,建立寄存器的概念以及他们同硬件部件的联系。
增强学习的信心。
能有这些体会,这一节就算过关了。
随着以后的深入,你会发现小小单片机里面是一个大世界,兴趣也由此而生。
0onc我们上一次讲的两个指令是是如何控制管脚电平的高低。
前提是所有管脚已经被定义成输出了(OUT)如果被定义成了输入,则上次的指令虽然也能运行,但运行后丝毫不能改变管脚电平高低,因为此时管脚是输入状态,电平取决于外部输入,指令无法改变。
在PIC单片机系列中,改变I/O口的输入输出依靠写入寄存器TRIS的值,相应位写0,表示对应管脚被定义成了输出,写1,就是输入。
现在假如预把GP1、GP2管脚定义成输出,其他脚全是输入。
那就应该向TRIS寄存器写入二进制数11111001,换算成十六进制就是F9H.依照以前我们学到的知识,在PIC系列单片机里,本来应该用下列的语句来完成我们的设定:MOVlw0F9H'常数进W以字母开头的常数前面必须加0MOVwf TRISA'把W内的数复制到TRIS实际上PIC系列的单片机也都是这么写的,后面加的A,表示第一个8位的口(有的单片机不仅一个口,还有好几个8位的I/O口如TRISB TRISC TRISD等等).但是,记住了,PIC12系列的单片机必须改写成为:MOVlw0F9H'常数进W以字母开头的常数前面必须加0tris GPIO'把W内的数复制到TRIS以后凡见到这个指令一律理解成MOVwf TRISA写法不同,意思是一样的.这样你就又学了一个指令TRIS,不过这个指令的实质还是你曾经学过的MOVwf只是写法不同罢了.在PIC12系列里TRIS作为指令,在其他系列(PIC16\17\18)里把TRIS作为普通寄存器看待.因为我们现在讲的就是PIC12CE519,所以我们暂时用tris GPIO这个格式,等以后进入PIC16C877我们再写成MOVwf TRISA,至于理解按照后者进行.'-----------如果我们要控制GP1GP2管脚的输出电平,其他管脚作为输入.并且让GP1输出低电平,GP2输出高电平.完整的程序如下:MOVlw0F9H'常数进Wtris GPIO'把W内的数复制到TRIS,GP1GP2为输出,其他为输入'此行无命令,起到的作用是容易读懂程序MOVlw04H'常数4的二进制是00000100,GP1=0GP2=1 MOVwf GPIO'W内的数进GPIO输出生效,原来定义成输入的脚的电平,不会受该句影响上面已经学会了三条指令,但是8位寄存器的概念概念一定要建立起来,程序通过写入寄存器不同的数据控制管脚作为输入使用还是输出使用,作为输出时是输出高电平还是低电平。