当前位置:首页 > 嵌入式 > 嵌入式硬件

http://f9       ;c=0相减结果为负,f9
         ┋

   4) 循环n次的程序

   如果要使某段程序循环执行n次,可以用一个寄存器作计数器。下例以f10做计数器,使程序循环8次。
       count equ 10     ;定义f10名称为count(计数器)
          ┋
       movlw 8
       movwf count loop   ;循环体
    loop
           ┋
       decfsz count,1    ;count减1,结果为零则跳
       goto loop       ;结果不为零,继续循环
           ┋       ;结果为零,跳出循环

   5)“if……then……”格式的程序

   下面以“if x=y then goto next”格式为例。
       movf x,0      ;x→w
       subwf y,0     ;y—w(x)→w
       btfsc status,z   ;x=y 否
       goto next      ;x=y,跳到next去执行。
          ┋       ;x≠y

   6)“for……next”格式的程序

   “for……next”程序使循环在某个范围内进行。下例是“for x=0 to 5”格式的程序。f10放x的初值,f11放x的终值。
       start  equ  10
       daend  equ  11
           ┋
       movlw 0
       movwf start     ; 0→start(f10)
       movlw 5
       movwf daend     ;5→daend(f11)
   loop
           ┋
      incf start,1     ;start值加1
      movf start,0
      subwf daend,0     ;start=daend ?(x=5否)
      btfss status,z
      goto loop        ;x<5,继续循环
           ┋       ;x=5,结束循环

   7)“do while……end”格式的程序

   “do while……end”程序是在符合条件下执行循环。下例是“do while x=1”格式的程序。f10放x的值。
      x  equ  10
        ┋
      movlw  1
      movwf  x     ;1→x(f10),作为初值
   loop
        ┋
      movlw 1
      subwf x,0
      btfss status,z   ;x=1否?
      goto loop      ;x=1继续循环
        ┋        ;x≠1跳出循环

   8) pic单片机查表程序

   查表是程序中经常用到的一种操作。下例是将十进制0~9转换成7段led数字显示值。

      设led为共阳,则0~9数字对应的线段值如下表:十进数 线段值 十进数 线段值 0 c0h 5 92h 1 c9h 6 82h 2 a4h 7 f8h 3 b0h 8 80h 4 99h 9 90h   
   pic单片机的查表程序可以利用子程序带值返回的特点来实现。具体是在主程序中先取表数据地址放入w,接着调用子程序,子程序的第一条指令将w置入pc,则程序跳到数据地址的地方,再由“retlw”指令将数据放入w返回到主

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭