位置:51电子网 » 技术资料 » 单 片 机

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

发布时间:2008/5/27 0:00:00 访问次数:490

http://www.hificat.com

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返回到主

http://www.hificat.com

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返回到主

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!