PIC汇编语言程序设计基础

合集下载

PIC单片机C语言编程入门

PIC单片机C语言编程入门

PICC 入门笔录PIC 单片机 C 语言编程入门笔录一、 C语言基础复习 --------没 C语言基础看起来可能有点困难。

C程序的语句语句名称一般形式说明表达式语句表达式;表达式语句由表达式加上分号“;”组成函数调用语函数名 ( 实质参数表 ) ;实质参数、形式参数二个看法要理解句控制语句附件 1控制语句用于控制程序的流程复合语句多个语句用括号 {} 括起空语句;只有分号“;”组成的语句称为空语句赋值语句变量 =( 变量 =表达式 );赋值表达式再加上分号组成的表达式语句数据输出语printf( “格式控制字符句串” )附件 1(1)条件判断语句if 语句, switch 语句(2)循环执行语句do while 语句, while 语句, for 语句(3)转向语句break 语句, goto语句, continue语句, return语句小于小于或等于关系运算符大于大于或等于等于不等于<<=>>===!=关系运算符都是双目运算符,其结合性均为左结合。

在六个关系运算符中,<,<=,>,>= 的优先级相同,高于 ==和 != ,==和!= 的优先级相同。

关系表达式的值是“真”和“假” ,用“ 1”和“ 0”表示。

与运算逻辑运算符或运算非运算&&||!&&和或运算符|| 均为双目运算符。

拥有左结合性。

非运算符”! ”为单目运算符,拥有右结合性 , 逻辑运算的值也为“真”和“假”两种,用“ 1”和“0 ”来表示。

单目运算符 >算术运算符 >关系运算符 >逻辑运算符 >赋值运算符第三章 :控制语句1.if语句C语言的 if语句有三种基本形式。

1、若是表达式的值为真,则执行此后的语句,否则不执行该语句。

if(表达式)语句;2、若是表达式的值为真,则执行语句1,否则执行语句 2 。

If( 表达式 )语句 1;else语句 2;3、依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。

PIC单片机汇编语言基础

PIC单片机汇编语言基础

P I C单片机汇编语言基础(总18页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--PIC单片机汇编语言基础1、程序的基本格式先介绍二条伪指令:EQU ——标号赋值伪指令ORG ——地址定义伪指令PIC16C5X在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:PIC16C54/55:1FFHPIC16C56:3FFHPIC16C57/58:7FFH一般来说,PIC的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。

但这里我们推荐一种清晰明了的格式供参考。

TITLE This is …… ;程序标题;--------------------------------------;名称定义和变量定义;--------------------------------------F0 EQU 0RTCC EQU 1PC EQU 2STATUS EQU 3FSR EQU 4RA EQU 5RB EQU 6RC EQU 7┋PIC16C54 EQU 1FFH ;芯片复位地址PIC16C56 EQU 3FFHPIC16C57 EQU 7FFH;-----------------------------------------ORG PIC16C54 GOTO MAIN ;在复位地址处转入主程序ORG 0 ;在0000H开始存放程序;-----------------------------------------;子程序区;-----------------------------------------DELAY MOVLW 255┋RETLW 0;------------------------------------------;主程序区;------------------------------------------MAINMOVLW B‘00000000’TRIS RB ;RB已由伪指令定义为6,即B口┋LOOPBSF RB,7 CALL DELAYBCF RB,7 CALL DELAY┋GOTO LOOP;-------------------------------------------END ;程序结束注:MAIN标号一定要处在0页面内。

PIC单片机汇编语言学习(一)

PIC单片机汇编语言学习(一)

PIC单⽚机汇编语⾔学习(⼀)1、汇编语⾔的语句格式:标号操作码(指令助记符)操作数 ;注释(label) (opcode) (operand) (comment)2、常⽤伪指令a.EQU——符号名赋值伪指令格式:符号名 EQU nn——程序起始地址定义伪指令格式:ORG nnnnc.END——程序结束伪指令格式:ENDd.LIST——列表选项伪指令格式:LIST [可选项,可选项,......]e.INCLUDE:调⼊外部程序⽂件伪指令格式:INCLUDE "⽂件名"2、分⽀程序结构——对于程序中的指令运⽤作⼏点说明:(1)凡是需要2个数参与的逻辑运算(与、或、异或)和算术运算(加、减),都需要事先将其中⼀个操作数放⼊W中。

对于在此使⽤的减法指令更要格外关注,应预先把减数放⼈W中,或者说,预先放⼊W中的数,在运算中是当做减数,⽽寄存器中的数当做了被减数。

(2)⼀条条件跳转指令往往需要跟随⼀条⽆条件跳转指令,才能实现长距离的转移和程序的分⽀。

(3)PIC单⽚机的指令系统中没有设置专⽤的停机指令,可以⽤⼀条跳转到⾃⾝的⽆条件跳转指令GOTO来实现。

3、PIC单⽚机指令由3种基本类型指令组成:a.字节操作类指令b.位操作类指令c.⽴即数和控制操作类指令对于字节操作指令,f——>⽂件寄存器标识符,d——>⽬标寄存器标识符说明:⽬标标识符指定了操作结果的存放位置:d=0 操作结果存⼊W寄存器d=1 操作结果存⼊指定的⽂件寄存器,d默认值为14、指令集5、例⼦1 ;--------------------------------------------------------23 ;顺序程序结构4 ;将20H单元低4位取出存⼊21H,⾼四位取出存⼊22H5 ;要点:ANDLW和SWAPF67 ;---------------------------------------------------------8 MOVF 20H,0 ;将20H单元的内容送⼈W9 ANDLW 0FH ;W⾼四位清零低4位保持不变10 MOVWF 21H ;将拆分后的低4位送21H11 SWAPF 20H,0 ;将20H单元内容⾼、低半字节换位后送W1213 ANDLW 0FH ;再将W⾼四位清0低四位保持不变14 MOVWF 22H ;将拆分后的⾼四位送22H单元151617 ;--------------------------------------------------------1819 ;分⽀程序结构20 ;RAM中20H和21H单元存放2个数,找出⼤着存⼊22H单元21 ;要点:两数做减法,判断标志位C的值2223 ;---------------------------------------------------------24 STATUS EQU 03H ;定义STATUS寄存器地址为03H25 C EQU 0 ;定义进位/借位标志C在STATUS中得地址为026 MOVF 20H 0 ;将20H单元的内容送⼈W27 SUBWF 21H 0 ;⽤21H单元的内容减去W中的内容,结果存在W中28 BTFSS STATUS,C;若C=1,没借位,则21H单元中的数⼤,跳到F21BIG29 GOTO F20BIG ;若C=0,有借位,20H单元中得数较⼤,则跳⾄F20BIG 3031 F21BIG MOVF 21H,0 ;将21H中的内容存⼊W寄存器32 MOVWF 22H ;再将它转存到22H单元33 GOTO STOP ;跳过下⾯两条指令到程序末尾3435 F20BIG MOVF 20H,0 ;将20H中的内容存⼊W寄存器36 MOVWF 22H ;再将它转存到22H单元3738 STOP GOTO STOP ;任务完成,停机,原地踏步394041 ;--------------------------------------------------------4243 ;循环程序结构44 ;数据存储器中,从地址30H开始的50个单元全部写⼊00H45 ;要点:间接寻址寄存器FSR当做地址指针4647 ;---------------------------------------------------------48 COUNT EQU 20H ;指定20H单元作为循坏次数计数器(即循环变量)49 FSR EQU 04H ;定义FSR寄存器地址为04H50 INDF EQU 00H ;设定INDF寄存器地址为00H51 MOVLW D50 ;把计数器初值50送⼊W52 MOVWF COUNT ;再把50转⼊计数器(作为循环变量的操作值)53 MOVLW 30H ;把30H(起始地址)送⼊W54 MOVWF FSR ;再把30H转⼊寄存器FSR(⽤作地址指针)5556 NEXT CLRF INDF ;把以FSR内容为地址所指定的单元清057 INCF FSR,1 ;地址指针内容加1,指向下⼀单元58 DECFSZ COUNT,1 ;计数值减1,结果为0就跳过到下⼀条指令到STOP处59 GOTO NEXT ;跳转回去并执⾏下⼀次循环60 STOP GOTO STOP ;循环结束之后执⾏该语句,实现停机6162 ;--------------------------------------------------------6364 ;⼦程序结构65 ;3个数最⼤者放⼊40H单元6667 ;---------------------------------------------------------68 STATUS EQU 03H69 C EQU 00H70 X EQU 20H71 Y EQU 21H72 Z EQU 22H73 ;--------------------------------------------------------7475 ;主程序7677 ;---------------------------------------------------------7879 MAIN MOVF 30H,080 MOVWF X81 MOVF 21H,082 MOVWF Y83 CALL SUB84 MOVF Z,085 MOVWF X86 MOVF 32H,087 MOVWF Y88 CALL SUB89 MOVF Z,090 MOVWF 40H91 STOP GOTO STOP92 ;--------------------------------------------------------9394 ;⼦程序:(⼊⼝参数:X和Y,出⼝参数:Z)9596 ;---------------------------------------------------------97 SUB MOVF X,0 ;将X内容送⼈W98 SUBWF Y,0 ;Y内容减去W内容,结果存⼊W99 BTFSS STATUS,C;若C=1,没有发⽣借位,执⾏下⼀条,否则跳转100 GOTO X_BIG101102 Y_BIG MOVF Y,0 ;将Y中的数据送⼊W103 MOVWF Z ;再将它转存到Z104 GOTO THEEND ;跳过下⾯两条到末尾105106 X_BIG MOVF X,0 ;将X中的数据送⼊W107 MOVWF Z ;再将它转存到Z108 THEEND RETURN ;⼦程序返回。

PIC单片机的C语言编程指南

PIC单片机的C语言编程指南

PIC单片机的C语言编程指南PIC单片机是一种常用的嵌入式系统开发平台,其具有低功耗、成本低廉、易于编程等优点,在工业自动化、电子设备控制等领域有着广泛应用。

本文将为读者提供一份PIC单片机的C语言编程指南,帮助初学者快速入门并掌握基本的编程技巧。

首先,我们需要了解一些PIC单片机的基本概念。

PIC单片机采用哈佛结构,具有多种型号和系列,每个系列有多个型号可供选择。

不同的型号和系列有不同的特性和功能,因此在编程时需要根据具体的芯片型号进行适配。

PIC单片机的编程语言常用的是C语言,其语法简洁,易于理解和学习,并且具有较高的可移植性。

在编写PIC单片机的C语言程序时,我们需要按照以下步骤进行:1. 引入头文件:使用#include指令引入所需的头文件,头文件包含了定义和声明所需的函数和变量。

3.初始化:在程序开始时对所需的资源进行初始化,包括引脚配置、中断设置、定时器初始化等。

4.主循环:编写主循环代码,其中包括需要重复执行的功能,例如读取传感器数据、处理输入输出等。

5.中断处理:根据需要,编写中断处理函数,处理外部中断、定时器中断等。

6.清理工作:在程序结束时,进行一些清理工作,例如释放资源、关闭设备等。

下面是一个PIC单片机的C语言编程示例:```c#include <xc.h> // 引入XC8编译器的头文件#define LED_PIN RC0 // 定义LED连接的引脚void iniTRISC0=0;//配置RC0引脚为输出模式void maiinit(; // 初始化while(1)LED_PIN=1;//点亮LED__delay_ms(500); // 延时500毫秒LED_PIN=0;//关闭LED__delay_ms(500); // 延时500毫秒}```上述代码实现了一个简单的功能,即使LED灯以500毫秒的间隔交替点亮和关闭。

在程序中,我们首先引入了`<xc.h>`头文件,然后定义了一个宏`LED_PIN`来表示连接LED的RC0引脚。

PIC汇编语言程序设计基础

PIC汇编语言程序设计基础

PIC汇编语言程序设计基础汇编语言是一种底层的计算机语言,可以直接操作计算机的硬件。

PIC汇编语言是一种常用于单片机(microcontroller)的汇编语言,主要用于编写控制程序。

本文将介绍PIC汇编语言的基本概念和学习方法。

首先,了解一些关于单片机的基本知识是很有帮助的。

单片机是一种集成电路,它包含了处理器、内存和输入输出接口等功能。

常用的单片机系列有PIC、AVR和8051等。

其中,PIC是由美国Microchip公司开发的一系列单片机。

学习PIC汇编语言的基础知识包括以下几个方面:1.计算机系统的基本概念:了解计算机系统的组成,包括处理器、内存和输入输出设备等。

了解汇编语言是如何运行在计算机系统上的。

2.汇编语言的基本知识:了解汇编语言的语法和指令集。

汇编语言是一种低级语言,使用符号代表具体的机器指令。

掌握汇编语言的基本语法,如变量声明、标号、指令和操作数等。

3.PIC汇编语言的特点:了解PIC单片机的特点和架构。

掌握PIC汇编语言的指令集和寄存器的使用方法。

了解数据存储器、程序存储器和特殊功能寄存器等的地址和用途。

4.单片机的编程方法:学习如何编写控制程序,包括输入输出控制、中断处理和定时器等。

了解控制程序的基本结构,如初始化、主循环和中断处理程序等。

在学习PIC汇编语言时,可以通过以下几种途径进行:1. 理论学习:可以通过阅读相关的教材和参考书籍了解PIC汇编语言的基本概念和语法。

可以参考Microchip官方提供的PIC汇编语言手册。

2. 实验实践:可以通过实验和实践的方式学习。

可以利用单片机开发板进行实验,通过编写控制程序来实现一些简单的功能。

可以使用Microchip官方提供的开发环境和仿真器。

3.网上资源:可以利用互联网上的资源进行学习。

有很多相关的教程和视频可以参考。

可以加入一些技术论坛和交流群组,与其他学习者进行交流和探讨。

在学习和实践过程中1.理解问题:首先要明确需要解决的问题,确定需要设计和实现的功能。

PIC单片机C语言教程

PIC单片机C语言教程

PIC单片机C语言教程PIC单片机(Peripheral Interface Controller)是德州仪器(Texas Instruments)公司生产的一款微控制器芯片。

它具有高性能、低功耗、易编程等特点,因此被广泛应用于各种电子设备中。

PIC单片机的编程语言主要是C语言。

C语言是一种广泛使用的高级程序设计语言,它结构简洁、表达能力强、可移植性好。

通过使用C语言,我们可以轻松地编写控制PIC单片机的程序,并且可以充分发挥PIC单片机的特性和功能。

在PIC单片机的C语言教程中,首先需要了解C语言的基础知识,包括变量、数据类型、运算符、控制语句等。

接下来,我们需要学习如何使用C语言编写PIC单片机的程序。

1.引脚配置:在PIC单片机的程序中,我们需要配置引脚的状态,包括输入输出模式、电平状态等。

通过使用C语言,我们可以方便地配置引脚,实现与外部器件的连接和通信。

2.中断编程:中断是PIC单片机的重要特性之一,可以使控制器在特定条件下停止当前任务执行,转而执行中断服务程序。

通过使用C语言,我们可以编写中断服务程序,实现特定条件下的任务切换和响应。

3.定时器编程:定时器是PIC单片机的另一个重要功能,可以实现一定时间间隔内的定时操作。

通过使用C语言,我们可以编程设置定时器的参数,以实现特定的定时操作。

4.串口通信:PIC单片机具有串口通信功能,可以与其他设备进行数据交换。

通过使用C语言,我们可以编写串口通信的程序,实现与其他设备的数据传输和交互。

5.外设控制:PIC单片机可以连接各种外设,如LCD显示屏、键盘、驱动器等。

通过使用C语言,我们可以编写控制程序,实现与外设的连接和控制。

以上只是PIC单片机C语言教程的一部分内容。

除了上述内容,我们还可以学习其他更高级的主题,如编码技巧、优化技术等。

通过系统学习和实践,我们可以掌握PIC单片机的C语言编程技巧,实现各种功能和应用。

总的来说,PIC单片机的C语言教程是一个庞大而丰富的话题,需要通过实践和深入学习来掌握。

PIC单片机之汇编语言

PIC单片机之汇编语言

PIC指令介绍2006-12-24 03:03:05来源:嵌入式技术网关键字: PIC指令系统<a target='_blank' href='/www/delivery/ck.php?n=826cd67'><img border='0' alt='' src='/www/delivery/avw.php?zoneid=212&n=826cd67' /></a>工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。

PIC的指令系统PIC 8位单片机共有三个级别,有相对应的指令集。

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

其指令向下兼容。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

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

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

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

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

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

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

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

PIC单片机汇编语言基础

PIC单片机汇编语言基础
2、程序设计基础
1)设置I/O口的输入/输出方向
PIC16C5X勺I/O口皆为双向可编程,即每一根I/O端线都可分 别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为 输出。
MOVLW 0FH ; 0000 1111 (0FH
TITLE This is ……;程序标题

;名称定义和变量定义
;
F0EQU0
RTCCEQU1
PCEQU2
STATUSEQU3
RBEQU 6
RБайду номын сангаасEQU 7
1:
PIC16C54 EQU 1FFH;芯片复位地址
PIC16C56 EQU 3FFH
PIC16C57 EQU 7FFH

ORG PIC16C54 GOTO MAIN;在复位地址处转入主程序
ORG 0;在0000H开始存放程序

;子程序区

DELAY MOVLW 255
1:
RETLW 0

;主程序区

MAIN
MOVLW B00000000'
LOOP
BSF RB 7 CALL DELAY
BCF RB 7 CALL DELAY
1:
GOTO LOOP

END;程序结束
注:MAIN标号一定要处在0页面内。
PIC
1、程序的基本格式
先介绍二条伪指令:
EQU——标号赋值伪指令
OR-一地址定义伪指令
PIC16C5X在RESET后指令计算器PC被置为全“1”,所以
PIC16C5XJI种型号芯片的复位地址为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 4.
(三)操作数
• 操作数是指令操作的对象,是数据或数据的地址。它们 可以使用数值或标号形式表示。 • 其中,数值可以使用二进制、八进制、十进制和十六进 制或ASCII字符值(参见讲义88页表4.2);而标号可以 是在此前定义或赋值的代表数字或地址标号或字符串。 • 如果操作数有两个,中间应由逗号隔开。
(二)ORG --- 程序起始地址定义伪指令
• 格式:
ORG nnnn
• 说明:用于指定该伪指令后面的源程序在ROM中存放 的起始地址。 • nnnn 为13位长的地址参数。
• 举例: ORG 0005H MAIN CLRW CALL SUB
:
MAIN是标号,也就是本行指令的符号地址。ORG伪指 令又将该符号地址定义为单片机内部RAM的0005H单 元,即CLRW的机器码存储在程序存储器ROM的0005H 开始的单元中。
( label ) ( opcode ) ( operand ) (commend)
1. 2.
标号必须从左面第1列开始,后面至少用1个空格与操 作码隔离(注意:标号后面没有冒号); 在无标号时,操作码前至少要保留一个或一个以 上的空格(建议使用“Tab”键分割标号列);
3.
操作码与操作数之间至少要保留一个或一个以上的 空格,如果有两个操作数时两者之间要由逗号(半 角)隔开(建议使用“Tab”键分割) ; 注释由分号(英文半角)引导,在标号、操作码和 操作数之后。标号也可以单独占一行单必需由分号 引导。
指令的可选项共有十余种,这里仅介绍2种。
① P=〈设定单片机型号〉。 例如:P = 16F877
② R=〈定义默认的数值进制〉。例如:R=DEC(十进制) 或:R=HEX(十六进制)
(五)INCLUDE --- 调入外部程序文件伪指令
• 格式 :INCLUDE “文件名” • 说明:用来告知汇编器,将一个预先编制好的外部程序文 件包含进来。这样做可以减少重复劳动,提高编程效率。 调入的外部程序文件通常是“定义文件”,即定义单片机 的复位矢量、专用寄存器的地址及控制位和状态为地址等。
第四章 PIC汇编语言程序设计基础
• • • • • • • • • • • • • 4.0 序论 4.1 MPASM汇编器的使用 4.2 汇编语言的语句格式 4.3 常用伪指令 4.4 程序格式和程序流程图 4.5 RAM数据存储器的体选寻址问题 4.6 顺序程序结构 4.7 分支程序结构 4.8 循环程序结构 4.9 子程序结构 4.10 程序的跨页跳转和跨页调用问题 4.11 延时程序设计 4.12 查表程序设计
• 伪指令只在汇编的过程中进行一些辅助工作,是程序设计 人员向编译器发出的控制命令,告诉汇编器如何完成汇编 过程和一些规定的操作,以及控制汇编的输入、输出和数 据定位等。一旦汇编完成,伪指令就不存在了。
• 与指令类似,伪指令的格式也是由4个字符段组成。
符号名 伪指令助记符 操作数 ;注释
符号名:通常为寄存器名、变量名、常数名、标志位名或控制 位名、复位矢量或中断矢量的一个字符串。同标号一 样符号名必须从一行的第1列开始,后面与伪指令应至 少保留一个空格。但不能向标号那样独占一行。
• 汇编语言的使用为我们提供了一种可以不涉及机器指令码 和实际存储器地址的便捷条件。 但是要想正确使用汇编语言编程必须了解“编译器” 所约定的内容,掌握如:语句格式、标号格式、数据进制 的表示方法、伪指令和汇编器的使用等等。 • 在下面的章节中将介绍MPASM编译器的使用、汇编语言 的语句格式、几种常用伪指令、程序格式和流程图。
;------------------------------------------------------------;复位矢量和中断矢量的安排(PIC16F87X) 注释 ;------------------------------------------------------------ORG 0000H ;复位矢量入口 GOTO MAIN ;转跳到主程序 ORG 0004H ;中断矢量入口 GOTO INT_BODY ;跳转到中断服务程序 ;--------------------------------------------------------------;主程序区 ;--------------------------------------------------------------ORG 0005H ;主程序从0005H开始存放 MAIN CLRW CALL SUB „ „ 标号 GOTO MAIN
(一)EQU --- 符号名赋值伪指令
• 格式: 符号名 EQU nn

• 说明:使 EQU 两边的值相等。其中 nn 是长度不同的二进制数(可 以分别作为寄存器名、位地址、8位的数据或常数、13位的复位或 中断矢量等 )。一旦符号名被EQU赋值,其值就固定下来不能再 重新改变。
• 举例:
STATUS RP0 EQU EQU 03H 05H ;定义寄存器名 ;定义位地址
3. 4.
5.
一个标号在系统中只能定义一次。
(二)操作码
1. 2. 在汇编语言语言源程序中,尽管其它3个字段有时是空的, 但操作码字段无论在何时都不能是空的。 操作码是指令的助记符,是指令功能的英文缩写,表示指 令的操作类型、性质,是汇编语言语句中的“关键字”, 因此是不能省略的。 汇编器将操作码进行汇编时,将其与一个预先建立的操作 码索引表相比较找出对应的机器码取而代之,这叫“代真” 当操作码前无标号时,操作码前至少要留有一个空格以防 汇编器将其误认为标号。
TMR0_b
EQU
00H
;定义定时器的初值常数
• 【举例】:在PIC指令系统中,没有寄存器寻址的方式,汇 编程序也不允许直接使用寄存器的名字。所以与寄存器相关 的操作只能通过“直接寻址”方式完成。 【如】:将W中的数据送PORTC寄存器: MOVWF 07H 因此,编写PIC的程序清单时,在程序的开头可以使用QEU 伪指令现将相关的寄存器名进行定义,然后在程序中就可以 直接引用寄存器的名字。 PORTC EQU 07H ∶ ;定义寄存器名
返回
4.4 程序格式和程序流程图
• 虽然书写源程序时没有统一的要求,但是一个良好的格式 风格非常重要。在此推出一种风格的格式供参考:
;------------------------------------------------------;符号定义和变量定义 ;------------------------------------------------------INDF EQU 00H ;把后面程序指令要用到的 TMR0 EQU 01H ;寄存器单元地址用表义性很 PCL EQU 02H ;强的符号名预先定义 STATUS EQU 03H FSR EQU 04H PORTA EQU 05H TRISA EQU 85H X EQU 20H ;对程序所需的变量预先定义 Y EQU 21H
(四)注释
• 注释部分用于对指令进行注解和说明。虽然注释可有可无, 但对于一个编程者来说,为了便于程序的阅读、交流、修 改和调试,在一些关键的语句上加标注释是一种好的编程 习惯;
• 注释由半角的引号“;”开始,它不是程序的功能部分,编 译器对该部分不做任何处理。
返回
4.3 常用伪指令
• 所谓伪指令就是“假指令”的意思,它不是为CPU识别的 指令、没有对应的机器码。它是为编译器服务的指令,如 确定指令的存储地址,为标号、字符串赋值等。 • 伪指令的使用使程序在书写、阅读上更方便。对于一些没 有说明意义的数字、RAM地址可以通过伪指令换为有意义 的字符来取代,使程序具有很好的可读性。如:在PIC的 指令中不能直接引用寄存器的名字取代地址,只能通过 EQU伪指令定义后引用其寄存器的符号。
;---------------------------------------------------;子程序区和中断服务程序区 ;---------------------------------------------------SUB MOVLW 01H ;子程序 „ „ RETURN ;子程序返回 ; INT_BODY ;中断服务程序 MOVLW 0FFH … … RETFIE ;中断服务程序返回 ;----------------------------------------------------END ;全部程序结束
返回
4.2 汇编语言的语句格式
• 为了使编译器能够顺利的对用户编制的汇编语言源程序进 行代码转换,在编制源程序时必须依照汇编器的约定进行 书写。 • microchip公司提供的MPASM汇编器其汇编语言格式的一 般格式由4个字段组成,这4个段不都是必要的,但顺序不 能颠倒。 标 号 操作码 操作数 ;注 释
2.
3.
4.
尽管C语言已经成为各类单片机重要的开发手段,但是 汇编语言永远不会被淘汰,只有将汇编语言和C语言有 机的结合起来才能高效的实现应用软件的设计。
4.0 序论
• CPU所能识别的是由 “0”或“1”组成的二进制的 “机器语 言”。如: “SLEEP”指令的机器语言: “00000001100011” 。但机器语言不便于人们编写、阅读。 • 汇编语言是对机器语言的改进。使用了便于记忆、阅读的符 号、字符串来表示指令的操作码、操作数和操作数地址。是 一种符号语言,它与机器语言一一对应。 • 汇编语言CPU是不能识别的,因此必须使用一种工具将其 “翻译”为机器语言,这个工具叫“汇编器”或“汇编程 序”。使用“汇编器”或“汇编程序”帮助将汇编语言的源 程序转换为机器语言,这一过程称之为“汇编”。
4.
(一)标号
1.
2.
在指令前的标号实际上就是该指令的符号地址。
并不是每条指令都需加标号的,只有那些欲被其它语句引 用的语句之前才需要加标号。子程序第一条语句的标号实 际上就是该子程序的名称; 标号可以单独作为作为一行; 标号的第1个字符必须由字母或下划线 “_” 开始,并且从 每一行的第1列开始写。标号最多可由32个字母、数字和 其它符号组成。标号不能使用指令的助记符、寄存器名、 或其它系统中已有固定用途的字符串(系统的保留字)。
相关文档
最新文档