单片机编程之汇编语言基础-PIC单片机汇编指令.doc

单片机编程之汇编语言基础-PIC单片机汇编指令.doc

ID:27863319

大小:84.50 KB

页数:12页

时间:2018-12-06

单片机编程之汇编语言基础-PIC单片机汇编指令.doc_第1页
单片机编程之汇编语言基础-PIC单片机汇编指令.doc_第2页
单片机编程之汇编语言基础-PIC单片机汇编指令.doc_第3页
单片机编程之汇编语言基础-PIC单片机汇编指令.doc_第4页
单片机编程之汇编语言基础-PIC单片机汇编指令.doc_第5页
资源描述:

《单片机编程之汇编语言基础-PIC单片机汇编指令.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、单片机编程之汇编语言基础-PIC单片机汇编指令    1、程序的基本格式  先介绍二条伪指令:  EQU——标号赋值伪指令  ORG——地址定义伪指令  PIC16C5X在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:  PIC16C54/55:1FFH  PIC16C56:3FFH  PIC16C57/58:7FFH  一般来说,PIC的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。  TITLETh

2、isis……;程序标题  ;--------------------------------------  ;名称定义和变量定义  ;--------------------------------------  F0   EQU 0  RTCC  EQU 1  PC   EQU 2  STATUS EQU 3  FSR   EQU 4  RA   EQU 5  RB   EQU 6  RC   EQU 7  ┋  PIC16C54EQU1FFH;芯片复位地址  PIC16C56EQU3FFH 

3、 PIC16C57EQU7FFH  ;-----------------------------------------  ORGPIC16C54GOTOMAIN  ;在复位地址处转入主程序  ORG 0   ;在0000H开始存放程序  ;-----------------------------------------  ;子程序区  ;-----------------------------------------  DELAYMOVLW255  ┋  RETLW0  ;--------

4、----------------------------------  ;主程序区  ;------------------------------------------  MAIN  MOVLWB‘00000000’  TRISRB  ;RB已由伪指令定义为6,即B口  ┋  LOOP  BSFRB,7CALLDELAY  BCFRB,7CALLDELAY  ┋  GOTOLOOP  ;-------------------------------------------  END  ;程序

5、结束  注:MAIN标号一定要处在0页面内。  2、程序设计基础  1)设置I/O口的输入/输出方向  PIC16C5X的I/O口皆为双向可编程,即每一根I/O端线都可分别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRISf来实现,写入值为“1”,则为输入;写入值为“0”,则为输出。  MOVLW0FH ;00001111(0FH)  输入输出  TRIS6   ;将W中的0FH写入B口控制器,  ;B口高4位为输出,低4位为输入。  MOVLW0C0H;11000000(0C0

6、H)  RB4,RB5输出0RB6,RB7输出1  2)检查寄存器是否为零  如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例:  MOVF10,1   ;F10→F10,结果影响零标记状态位Z  BTFSSSTATUS,Z   ;F10为零则跳  GOTONZ   ;Z=0即F10不为零转入标号NZ处程序  ┋   ;Z=1即F10=0处理程序  3)比较二个寄存器的大小  要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。注意,相减的结果放入W,则不会影响二

7、寄存器原有的值。  例如F8和F9二个寄存器要比较大小:  MOVF8,0  ;F8→W  SUBWF9,0   ;F9—W(F8)→W  BTFSCSTATUS,Z   ;判断F8=F9否  GOTOF8=F9  BTFSCSTATUS,C   ;C=0则跳  GOTOF9>F8  ;C=1相减结果为正,F9>F8  GOTOF9<  F9  ;C=0相减结果为负,F9  ┋  4)循环n次的程序  如果要使某段程序循环执行n次,可以用一个寄存器作计数器。下例以F10做计数器,使程序循环8次。

8、  COUNTEQU10  ;定义F10名称为COUNT(计数器)  ┋  MOVLW8  MOVWFCOUNTLOOP  ;循环体  LOOP  ┋  DECFSZCOUNT,1   ;COUNT减1,结果为零则跳  GOTOLOOP  ;结果不为零,继续循环  ┋  ;结果为零,跳出循环  5)“IF……THEN……”格式的程序  下面以“IFX=YTHENGOTONEXT”格式为例。  MOVFX,0   ;X→W  SUBWFY,0  ;Y—W(X)→W  BTFSCSTATUS,Z  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。