单片机.docx

上传人:b****3 文档编号:4424401 上传时间:2022-12-01 格式:DOCX 页数:18 大小:28.99KB
下载 相关 举报
单片机.docx_第1页
第1页 / 共18页
单片机.docx_第2页
第2页 / 共18页
单片机.docx_第3页
第3页 / 共18页
单片机.docx_第4页
第4页 / 共18页
单片机.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机.docx

《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(18页珍藏版)》请在冰豆网上搜索。

单片机.docx

单片机

PIC系列单片机简介

 

 一、引言

  据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。

这说明单片机应用在我国才刚刚起步,有着广阔的前景。

培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。

  当今单片机厂商琳琅满目,产品性能各异。

针对具体情况,我们应选何种型号呢?

首先,我们来弄清两个概念:

集中指令集(CISC)和精简指令集(RISC)。

采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。

它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。

采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。

这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。

同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。

属于CISC结构的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Winbond(华邦)W78系列、荷兰Pilips的PCF80C51系列等;属于RISC结构的有Microchip公司的PIC系列、Zilog的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。

一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。

不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。

  根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。

我国一开始都采用ROMless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。

如单片机的应用一味强调接口,外接I/O及存储器,便失去了单片机的特色。

目前单片机大都将程序存储体置于其内,给应用带来了极大的方便。

值得一提的是,以往OTP型单片机的价格是QTP的3倍,而现在已降至1.5-1.2倍,选用OTP型以免订货周期、批量的麻烦是可取的。

二、PIC系列单片机有什么优势?

  自从我95年接触PIC单片机以来,便一直热衷于这种单片机的开发与应用。

有不少朋友问我:

PIC到底有什么优势?

也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。

  1)PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。

就实际而言,不同的应用对单片机功能和资源的需求也是不同的。

比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。

PIC系列从低到高有几十个型号,可以满足各种需要。

其中,PIC12C508单片机仅有8个引脚,是世界上最小的单片机,如图1所示:

            

图1PIC12C508单片机外型

该型号有512字节ROM、25字节RAM、一个8位定时器、一根输入线、5根I/O线,市面售价在3-6元人人民币。

这样一款单片机在象摩托车点火器这样的应用无疑是非常适合。

PIC的高档型号,如PIC16C74(尚不是最高档型号)有40个引脚,其内部资源为ROM共4K、192字节RAM、8路A/D、3个8位定时器、2个CCP模块、三个串行口、1个并行口、11个中断源、33个I/O脚。

这样一个型号可以和其它品牌的高档型号媲美。

  2)精简指令使其执行效率大为提高。

PIC系列8位CMOS单片机具有独特的RISC结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2:

1的代码压缩,速度提高4倍。

  3)产品上市零等待(Zerotimetomarket)。

采用PIC的低价OTP型芯片,可使单片机在其应用程序开发完成后立刻使该产品上市。

  4)PIC有优越开发环境。

OTP单片机开发系统的实时性是一个重要的指标,象普通51单片机的开发系统大都采用高档型号仿真低档型号,其实时性不尽理想。

PIC在推出一款新型号的同时推出相应的仿真芯片,所有的开发系统由专用的仿真芯片支持,实时性非常好。

就我个人的经验看,还没有出现过仿真结果与实际运行结果不同的情况。

  5)其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。

  6)彻底的保密性。

PIC以保密熔丝来保护代码,用户在烧入代码后熔断熔丝,别人再也无法读出,除非恢复熔丝。

目前,PIC采用熔丝深埋工艺,恢复熔丝的可能性极小。

  7)自带看门狗定时器,可以用来提高程序运行的可靠性。

  8)睡眠和低功耗模式。

虽然PIC在这方面已不能与新型的TI-MSP430相比,但在大多数应用场合还是能满足需要的。

 

 

 

 

PIC8位单片机汇编语言常用指令的识读(上)

  各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。

  PIC8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

  在这里笔者介绍PIC8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。

  一、PIC汇编语言指令格式

  PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:

  标号 操作码助记符 操作数1,操作数2;注释

  指令格式说明如下:

指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

  1标号 与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

  书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:

)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

  2操作码助记符 该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

  3操作数 由操作数的数据值或以符号表示的数据或地址值组成。

若操作数有两个,则两个操作数之间用逗号(,)分开。

当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。

还可以是被定义过的标号、字符串和ASCⅡ码等。

具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。

在这里PIC8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。

  指令的操作数项也是可选项。

  PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。

因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。

其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。

所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。

有关的寻址实例,均可在本文的后面找到。

  4注释 用来对程序作些说明,便于人们阅读程序。

注释开始之前用分号(;)与其它部分相隔。

当汇编程序检测到分号时,其后面的字符不再处理。

值得注意:

在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。

  二、清零指令(共4条)

  1寄存器清零指令

  实例:

CLRW;寄存器W被清零

  说明:

该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。

  2看门狗定时器清零指令。

  实例:

CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

  说明:

WDT是英语WatchdogTimer的缩写字母。

CLR见上述说明。

注意该两条指令无操作数。

  3寄存器f清零指令。

指令格式:

CLRFf

  实例:

CLRFTMRO;对TMRO清零

  说明:

在PIC系列8位单片机中,常用符号F(或f)代表片内的各种寄程器和F的序号地址。

F取值按PIC系列不同型号而不同,一般为Ox00~Ox1F/7F/FF。

TMRO代表定时器/计数器TMRO,所以CLRF对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器TMRO。

  4位清零指令。

指令格式BCFf,b

  实例:

BCFREG1,2;把寄存器REG1的D2位清零

  说明:

BCF是英语BitClearF的缩写。

指令格式中的F,同上说明;符号b是表示PIC片内某个8位数据寄存器F的位号(或位地址),所以b的取值为0~7或D0~D7。

实例中REG是Register的缩写。

实例中的2代表指令格式中的b=2即寄存器REG1的D2位。

  通过上述四条清零指令格式和实例,可以说明,学习PIC系列8位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。

初学者没有必要死记指令,重要是理解和实践。

成都 史为 

  竞赛试题:

  10有一RB(8位)寄存器,其工作状态RB=OxB8,对它执行指令:

  BCFRB,4

  执行后的RB=B   ;Ox  ;O  和D  。

  11指令中的标号是可选项,在什么条件下可派上用场?

   

 

Windows下PIC8位单片机源程序汇编和固化

(一)

 

   单片机本身没有开发编程能力,所以要把单片机变成一种应用产品,必须借助于硬件开发和软件开发两种工具。

在进行软件开发时,首先利用相关的编辑软件,按照相应的格式建立PIC单片机的源程序(助记符程序),然后对源程序进行汇编。

在完成汇编之后,用户可以利用模拟调试软件(价位低)或者硬件在线仿真器(价位高)对其目标程序(机器代码)进行运行调试,以发现其错误并修改之。

在经过调试、修改、再汇编之后,即可将修改后的目标程序用硬件(工具)编程器将目标代码烧写到用户的PIC芯片中。

最后将烧写后(即固化)的芯片插入到用户板(实验板)脱机运行,如还有问题(通常是多条程序的条件下),就检查硬件电路和软件的设计,找出错误并修改、再汇编、调试直到脱机运行正常为止。

  Microchip公司在推出PIC系列单片机产品的同时,也推出了相对应的软件开发和硬件开发工具,例如PIC在线仿真器、MPLAB集成开发软件、MPSIM软件仿真器、MPASM宏汇编程序以及PIC通用编程器等。

不仅如此,国内开发PIC系列单片机的工作也很迅速,许多公司或研究所也推出了相应的开发装置,其中既有适用于初学者、低价位的软件仿真和编程器,也有适用于产品开发的高中档开发应用装置。

有些高档的开发器还能支持C编译器(如MP-C)与模糊逻辑开发系统等。

这些开发装置既可独立运行,也可以和PC机联机运行。

总之,开发PIC系列单片机的工具不仅十分成熟也是多种多样的。

  在PC机上对PIC系列单片机的源程序汇编时,既可以在DOS条件下,也可以在Windows条件下进行。

以下将介绍Windows下源程序汇编的方法和步骤。

  1Windows下PIC集成开发软件MPLAB

  MPLAB是Microchip公司为PIC系列单片机开发产品提供的适用于PC机Windows的集成开发软件。

MPLAB的版本从早期到现在已发展到多种:

如MPLABV301版、V302版、V40版、V499和V50版等。

各版本之间向下兼容,所以尽管PIC系列单片机品种如此之多,用户只需选择相应版本的MPLAB集成开发软件,均可达到开发目的。

  

(1)MPLAB的特性和安装

  MPLAB是一种易学易用的PIC系列单片机产品的集成开发工具软件。

该软件由MPLAB编辑程序、MPLAB项目管理程序(Projectmanager)、MPASM汇编程序(Windows版)和MPLAB-SIM模拟调试程序等工具软件组成。

MPLAB能帮你调试源代码,观察程序流程、调试以及优化固件生产设计的PIC单片机应用程序。

上述的各种软件将在本报下几期通过实例介绍其功能和用法。

  MPLAB集成开发软件对计算机系统的硬件与软件配置要求如下:

MicrosoftWindows3.X版、95版和98版均可;标准键盘和鼠标;4MB(最好是16MB以上)的内存和VGA以上显示器等。

MPLAB的安装简单,只要熟悉PC机的用户均可利用磁盘或光盘CD-ROM中MPLAB的SETUPEXE文件和相关的提示语句进行安装。

若是初学者,可请电脑行家进行安装。

安装MPLAB软件时,最好在显示屏上粘贴Microchip/MPLAB的快捷图标,以使操作方便。

  

(2)MPLAB的桌面系统

  Windows操作系统与DOS操作系统的最大区别就是广泛使用了图形化操作界面,因此对话框是用户在操作Windows过程中最经常接触的东西。

MPLAB的所有功能都可通过MPLAB桌面(对话框)中的菜单命令来操作。

  当你的PC机上安装了MPLAB集成开发软件之后,打开PC机,用鼠标点击显示器上的快捷图标Microchip即可在显示器上看到MPLAB的桌面,如附图所示(V499版)。

该桌面是一个大小可变的窗口。

MPLAB桌面顶部的左边字符为标题栏(MPLAB);标题栏的下面为菜单栏(MENU),菜单栏的下面为工具栏,底部为状态栏。

桌面窗口中的菜单栏是下拉式的。

  MPLAB共有多个菜单选项(V322、V499有9个,V301是8个)。

所有的MPLAB功能均可通过下拉式菜单来访问,菜单中加有下划线的字符表示加速键(KeyAccelerators),在菜单下拉时,用鼠标点击该字符键可立即执行该项功能。

  MPLAB的各种菜单的功能,笔者将会通过具体的程序汇编应用实例加以详细说明。

  

成都 丁锦源

  知识竞赛试题:

  26给单片机PIC16C54的工作寄存器W送数0x08,请写出相应的源程序清单。

 R3        EQU    0X03

            PORT5        EQU    0X05

            PORT6        EQU    0X06

            R3        EQU    0X03

            KEY_STATUS    EQU    0X10    ;低半字节为按键标志,高半字节为控制标志

            SIGNAL_LOW    EQU    0X11    ;信号电平低计数器

            SIGNAL_HIGH    EQU    0X12    ;信号电平高计数器

            DATA_RECORDER    EQU    0X13    ;接收码数据字节

            CODE_RECORDER2    EQU    0X14    ;接收码地址高字节

            CODE_RECORDER1    EQU    0X15    ;接收码地址低字节

            CODE_TOTAL    EQU    0X16    ;接收数据位计数器

            KEY_COUNTER    EQU    0X17    ;两次按键检测计数器

/**********************KEY_STATUS标志位定义***********************************/

            AUTORUN_KEY    EQU    0    ;遥控键标志

            LOCK_KEY    EQU    1    ;防盗键标志

            SEARCH_KEY    EQU    2    ;寻车键标志

            OPEN_KEY    EQU    3    ;解除键标志

            PRESS_FLAG    EQU    4    ;有键按下标志

            CHECK_FLAG    EQU    5    ;校验标志

/***********************CONSTANT DEFINE*************************************/

            CODE_ADDRESS1    EQU    0B10001100    ;遥控器地址码,更改常数即可实现其他遥控器收码

            CODE_ADDRESS2    EQU    0B00101100        

            AUTORUN_VALUE    EQU    0B00000011    ;遥控器相应键值,改变相应数值即可更改其功能

            LOCK_VALUE    EQU    0B00001100

            SEARCH_VALUE    EQU    0B00110000

            OPEN_VALUE    EQU    0B11000000

/**********************当PORT6.2口电平为高时调用该程序收码******************/

;PORT6.2为信号输入口

collect_2262:

            mov    a,@0xf0

            And     KEY_STATUS,a

            clr    code_total

            clr    signal_high

collect1:

            inc    signal_high

            MOV    A,SIGNAL_HIGH

            SUB    A,@30

            JBS    R3,0

            RET

            clr    signal_low

            call    delay20us

            jbs    port6,2

            jmp    collect_low

            jmp    collect1

collect_low:

    

            mov    a,signal_high    ;信号高电平宽度<80US时滤除

            sub    a,@4

            jbc    r3,0

            ret

            mov    a,@20        ;信号高电平宽度在80—400US时为采集为0

            sub    a,signal_high    ;信号高电平宽度在400US以上时为采集为1

            rrc    data_recorder

            rrc    code_recorder2

            rrc    code_recorder1

            inc    code_total

            clr    signal_high

            mov    a,@24

            xor    a,code_total

            jbc    r3,2

            jmp    collect_end

input_low:

            inc    signal_low

            mov    a,signal_low    ;信号低电平宽度大于800US时滤除

            sub    a,@40

            jbs    r3,0

            ret

            call    delay20us

            jbs    port6,2;3

            jmp    input_low    

            jmp    collect1

collect_end:

    

            mov    a,code_recorder1    ;校验低字节地址

            xor    a,@code_address1

            jbs    r3,2

            ret

            mov    a,code_recorder2    ;校验高字节地址

            xor    a,@code_address2

            jbs    r3,2

            ret

            jbs    KEY_STATUS,check_flag    ;是否是第一串收码?

            jmp    storage_data

            bc    KEY_STATUS,check_flag  

            mov    a,com_data_rec

            xor    a,data_recorder

            jbs    r3,2

            jmp    storage_data

            mov    a,data_recorder

            xor    a,@autorun_value        ;是启动键?

            jbs    r3,2

            jmp    key1

            bs    KEY_STATUS,autorun_key    ;置启动键标志

            bs    KEY_STATUS,press_flag    ;置有键按下标志

            clr    key_counter        ;清除按键间隔计数器

            ret            

key1:

            mov    a,data_recorder

            xor 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1