您的位置 首页 5G

根据SPCE061A单片机汇编语完成的流水灯

====================================================================名称:流水灯功能描述:发光二极管单向循环点亮。SPCE061A

//====================================================================//

//称号:流水灯
//功用描绘:发光二极管单向循环点亮。SPCE061A单片机汇编语言完成

//===================================================================//

.include SPCE061A.inc //包括头文件
.ram
.var R_LEDControl //界说LED操控变量
.var R_DaleyControl //界说延时程序操控变量
.code
.public _main

//===================================================================//
//函数名:主函数
//功用描绘:操控发光二极管单向循环点亮
//===================================================================//

_main:
r1=0x00ff //界说IOA口为同向输出,并输出低电平
[P_IOA_Dir]=r1
[P_IOA_Attrib]=r1
r1=0x0000
[P_IOA_Data]=r1 //IO口电平初始化,假如是接共阳极的LED,则选用高电平输出
r1=0x0001
[R_LEDControl]=r1
L_MAINloop: //经过循环左移完成LED单向循环点亮程序段
r1=[R_LEDControl]
[P_IOA_Data]=r1 //点亮第一个LED
r1=r1 LSL 1 //循环左移句子
CMP r1,0x0100 //操控点亮的LED在IOA低八位之内。CMP指令进行做差比较
JNE NoOver //该指令的意思为:不等于转接到后边的程序段
r1=0x0001 //假如等于的话,则对IOA口的输出初始化
NoOver:
[R_LEDControl]=r1
r1=0x0000 //给延时函数的计数赋初值
[R_DaleyControl]=r1
CALL L_Daleyloop //转到延时子函数
JMP L_MAINloop //循环操控LED的点亮

//===================================================================//
//函数名:延时函数
//功用描绘:经过计数完成延时,不精确延时
//===================================================================//

L_Daleyloop:
r1=0x0001
[P_Watchdog_Clear]=r1 //清看门狗
r1=[R_DaleyControl]
r1+=1 //延时计数加1
[R_DaleyControl]=r1
JNZ L_Daleyloop //JNZ指令标明“非0则转到loop”。该句子的意思是“R_DaleyControl的值不为0则转到L_Daleyloop”。
RETF //一般情况下,循环加法的值到65535时为最大值,超越该值时则会从0算起,及65536标明0

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/261109.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部