PIC系列单片机程序设计基础.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、PIC单片机程序的基本格式   先介绍二条伪指令:   EQU ——标号赋值伪指令   ORG ——地址定义伪指令   PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:    PIC16C54/55:1FFH    PIC16C56:3FFH    PIC16C57/58:7FFH   一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。   TITLE This is …… ;程序标题   ;   ;名称定义和变量定义   ;   F0    EQU  0   RTCC   EQU  1   PC    EQU  2   STATUS  EQU  3   FSR   EQU  4   RA    EQU  5   RB    EQU  6   RC    EQU  7          ┋   PIC16C54 EQU 1FFH ;芯片复位地址   PIC16C56 EQU 3FFH   PIC16C57 EQU 7FFH   ;   ORG PIC16C54 GOTO MAIN   ;在复位地址处转入主程序   ORG   0          ;在0000H开始存放程序   ;   ;子程序区   ;   DELAY MOVLW 255       ┋       RETLW 0   ;   ;主程序区   ;   MAIN       MOVLW B       TRIS RB       ;RB已由伪指令定义为6,即B口        ┋   LOOP       BSF RB,7 CALL DELAY               BCF RB,7 CALL DELAY         ┋       GOTO LOOP   ;        END       ;程序结束    注:MAIN标号一定要处在0页面内。   2、PIC单片机程序设计基础   1) 设置 I/O 口的输入/输出方向   PIC16C5X单片机的I/O 口皆为双向可编程,即每一根I/O 端线都可分别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为输出。       MOVLW 0FH  ;0000 1111(0FH)             输入 输出       TRIS 6    ;将W中的0FH写入B口控制器,              ;B口高4位为输出,低4位为输入。       MOVLW 0C0H ; 11 000000(0C0H)               RB4,RB5输出0 RB6,RB7输出1   2) 检查寄存器是否为零   如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例:       MOVF 10,1      ;F10→F10,结果影响零标记状态位Z       BTFSS STATUS,Z    ;F10为零则跳       GOTO NZ        ;Z=0即F10不为零转入标号NZ处程序        ┋          ;Z=1即F10=0处理程序   3) 比较二个寄存器的大小   要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。注意,相减的结果放入W,则不会影响二寄存器原有的值。   例如F8和F9二个寄存器要比较大小:        MOVF 8,0       ;F8→W        SUBWF 9,0      ;F9—W(F8)→W        BTFSC STATUS,Z    ;判断F8=F9否        GOTO F8=F9        BTFSC STATUS,C    ;C=0则跳        GOTO F9F8       ;C=1相减结果为正,F9F8        GOTO F9F8       ;C=0相减结果为负,F9F8          ┋    4) 循环n次的程序   如果要使某段程序循环执行n次,可以用一个寄存器作计数器。下例以F10做计数器,使程序循环8次。        COUNT EQU 10     ;定义F10名称为COUNT(计数器)           ┋        MOVLW 8        MOVWF COUNT LOOP   ;循环体    LOOP            ┋        DECFSZ COUNT,1    ;COUNT减1,结果为零则跳        GOTO LOOP       ;结果不为零,继续循环            ┋

文档评论(0)

xiong8you77 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档