;MCD1实战一,点亮一个LED并持续3秒后熄灭
;该实战的目的作为学习和应用MCD1在线调试工具套件,进行项目的软件和硬件
;联合调试的范例程序,也就是当做一个用户程序实例,而演示板暂时充当用户电
;路的角色。这样就构成了一个软件、硬件齐全的自制项目模拟环境。
;本程序实现的功能是,把端口RC的8条引脚全部设置为输出模式,并从RC0输出高电平
;从而点亮RC0口的一个LED,持续3秒后LED熄灭.
;该程序可用于PIC16F87X(A)所有系列
;************************************************
;文件名为“mcd-led1b.ASM”
;**************************************************
status equ 3h ;定义状态寄存器地址
portc equ 7h ;定义端口C的数据寄存器地址
trisc equ 87h ;定义端口C的方向控制寄存器地址
;***********************************************************
org 000h ;定义程序存放区域的起始地址
nop ;放置一条ICD必须的空操用指令
bsf status,5 ;设置文件寄存器的体1
movlw 00h ;对端口C的方向控制码00H先送W
movwf trisc ;再由W转移到方向控制寄存器
bcf status,5 ;恢复到文件寄存器体0
movlw 01h ;将00000001B先送W
movwf portc ;再由W转移到数据寄存器,让RC0输出高电平点亮LED
call delay ;调用廷时子程序
bcf portc,0 ;熄灭LED
goto contentnbsp; ;原地循环
;-------------------------廷时子程序----------------------------
delay ;子程序名,也是子程序入口地址
movlw 0fh ;将外层循环参数值FFH经过W
movwf 20h ;送入用作外循环变量的20H单元
lp0 movlw 0ffh ;将第二层循环参数值FFH经过W
movwf 21h ;送入用作内循环变量的21H单元
lp1 movlw 0ffh ;将内层循环参数值FFH经过W
movwf 22h ;送入用作内循环变量的22H单元
lp2 decfsz 22h,1 ;变量22H内容递减,若为0跳跃
goto lp2 ;跳转到LP2处
decfsz 21h,1 ;变量21H内容递减,若为0跳跃
goto lp1 ;跳跃到LP1处
decfsz