📄 mod6_cnt.asm
字号:
; 文件名: mod6_cnt.asm
; 模块名: MOD6_CNT
; 初始化程序: MOD6_CNT_INIT
; 公司: 达盛科技
;
; 功能描述: 子程序实现一个模为 6 的计数器,状态从'0'到'5',输入变量 m6_trig_in
; 为触发信号,每次收到触发信号,输出 m6_cntr 变换到下一个状态.计满后复位
; 重新开始。
;
; |~~~~~~~~~~~~~~~|
; | |
; m6_trig_in o------>| MOD6_CNT |----->o m6_cntr
; | |
; |_______________|
;
;==============================================================================
; 修改记录:
;------------------------------------------------------------------------------
; 2005.08.12 版本 Ver 1.0
;===========================================================================
;(如果调用此模块, 将下面声明复制到主程序文件中)
; .ref MOD6_CNT, MOD6_CNT_INIT ;子程序调用
; .ref m6_trig_in, m6_cntr ;输入输出
;===========================================================================
;模块外部变量声明
.def MOD6_CNT, MOD6_CNT_INIT ;function call
.def m6_trig_in, m6_cntr ;Inputs
;===========================================================================
.include x24x_app.h
;===========================================================================
;模块内部变量定义
;---------------------------------------------------------------------------
;m6_cntr .usect "mod6_cnt",1 ;计数器输出
;m6_trig_in .usect "mod6_cnt",1 ;计数器输入
m6_cntr_vars .usect "mod6_cnt",2,1
m6_cntr .set m6_cntr_vars+0 ;计数器输出
m6_trig_in .set m6_cntr_vars+1 ;计数器输入
;======================================================================
MOD6_CNT_INIT: ;模块初始化
;======================================================================
LDP #m6_cntr
SPLK #0h, m6_cntr
SPLK #0h, m6_trig_in
RET
;======================================================================
MOD6_CNT: ;模块控制程序
;======================================================================
LDP #m6_cntr
LACC m6_trig_in
BCND M6C_END, EQ ;无触发则返回
CHK_STATE: LACC m6_cntr
SUB #05h ;判断是否计满
BCND M6_RST_ST0,EQ ;计满则复位计数器
LACC m6_cntr ;不满则转换到下一个状态 (Sn->Sn+1)
ADD #01h
SACL m6_cntr ;
B M6C_END
M6_RST_ST0:
SPLK #0h, m6_cntr ;复位输出为 0
M6C_END:
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -