PIC系列单片机程序设计基础二
扫描二维码
随时随地手机看文章
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返回到主