;实验目的:本程序主要实现一个简单的流水灯程序
;即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。)
;硬件要求:拨码开关S11全部置ON。
#include ;调用头文件
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
;**********************用户寄存器定义********************count equ 20h ;移位次数寄存器del_va1 equ 0ffh ;外层延时参数del_va2 equ 0afh ;内层延时参数org 00h ;程序人口地址;**********************主程序开始***********************mainnop ;ICD所需要的一条空指令clrf PORTC ;先清楚C口所有显示banksel TRISC ;选择I/O口方向寄存器所在的体clrf TRISC ;设置C口全为输出clrf STATUS ;返回体0movlw .8 movwf count ;装载循环次数8(C口共8位)bsf STATUS,C ;置进位标志位为1,因循环移位是带进位循环的looprlf PORTC,1 ;C口左移1位call delaycall delayCALL delay ;调用三次延时程序(保证亮度,以及流水灯闪烁速度)bcf STATUS,C ;清0进位标志位(永远只有一只LED亮)DECFSZ count,1 ;判断是否一轮循环结束goto loop ;否,继续循环移位GOTO main ;是,程序重头开始;***********************延时程序*************************delaymovlw del_va1 ;延时程序外层参数movwf 30hmovlw del_va2 ;延时程序内层参数movwf 31hdecfsz 31h,1goto $-1decfsz 30h,1goto $-4return;********************程序结束****************************end