|
第一个海尔单片机程序,用7P90芯片。 就是将PB口所接8个LED灯全亮,延时后,再关掉,循环而已。
#include <HR7P90H.INC>
#include <User_StudyDemo_Haier.inc>
ORG 0X0000
GOTO START
;*******************************************************************************
; 主 程 序 区
;*******************************************************************************
START
;---------------------------初 始 化------------------------
CALL MCU_INIT ;系统初始化(RAM、端口及特殊寄存器)
BSS PC,0
CLR PB
MAIN_LOOP
MOVI 0xff
MOVA PB ;8个LED亮
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CLR PB ;关LED
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
CALL DELAY200MS ;调用延时
GOTO MAIN_LOOP ;返回主程序循环
RET
;*******************************************************************************
; 初 始 化 模 块 区
;*******************************************************************************
MCU_INIT
;---------------------------------------
PORT_INIT ;端口、SFR初始化
; BCC STATUS,RP1
; BSS STATUS,RP0 ;设置文件寄存器的体1
; MOVI 0x00
CLR PAT ;设置PA口为数字I/O口
CLR PIE1 ;片内外设中断控制寄存器1清零
CLR PIE2 ;片内外设中断控制寄存器2清零
; MOVI 0x00
; BSS PSW,RP0
CLR PCT
CLR PBT ;设置PB口为输出
; MOVI 0xFA ;"11111010"
RET
;*******************************************************************************
; 延 时 子 程 序 区
;*******************************************************************************
DELAY200MS ;200ms延时入口(实测200.007ms)
MOVI .200 ;设置外层循环参数值200(T=(1+2+200*B-1+4)us)
GOTO DELAYMS_ENTR
DELAY5MS ;5ms延时入口(实测5.005ms)
MOVI .5 ;设置外层循环参数值5(T=(1+1+5*B-1+4)us)
DELAYMS_ENTR
MOVA DLY_1
DELAYXMS0 ;延时公共体,基值1ms,即B=1+1+[(0xF9*4)-1]+3=1000
MOVI 0xF9 ;设置内层循环参数值
MOVA DLY_2
NOP3
JDEC DLY_2,F ;变量DLY_2内容递减,若为0跳过下条指令
GOTO $-2 ;跳转回NOP指令,使循环体执行4个指令周期
JDEC DLY_1,F ;变量DLY_1内容递减,若为0跳过下条指令
GOTO DELAYXMS0 ;跳转到DELAYXMS0处
RET
END
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|