📄 emctx808moo.dt
字号:
/*------------------------------------------
This is TX808 prgram list
MCU : EM78P447S
this is the first Fuction sample for TX808
date: 2005.06.09
disgned by Aaron. 2005.06.11 finish
-------------------------------------------*/
include "EM78P447S.INC"
include "TxT808H00.h"
;*******************************************
org EM78P447S
jmp main
org 0x001
jmp TCCInt
org 0x010
;******************************************
/*=========================================
Task01: Interrupt list
1ms Timer list
=========================================*/
;******************************************
TCCInt:
disi
bc r3f,tcif
jbs r3f,exie
jmp gg
jbc Flag00,WorkBit
bs teshu,wen_kong1sBit
bc r3f,exie
;----------------------------------------
gg:
djz RegTime1ms
jmp TCCInt00
mov a,@CTime1ms
mov RegTime1ms,a
bs Flag20,ScanKeyT1msBit ;for scan Key 1ms FlagBit
nop
nop
djz time_lcd
jmp cc
mov a,@02
mov time_lcd,a
bs Flag00,T1msBit
cc:
djz RegTime100ms
jmp TCCInt00
mov a,@CTime100ms
mov RegTime100ms,a
bs Teshu,wen_kong100msbit
bs Teshu,key100msBit
bs Flag00,TRelay100msBit ;for Relay exchange time FlagBit
bs Flag00,TBell100msBit ;for Bell time FlagBit
bs Flag00,TMode100msBit ;for Mode time FlagBit
bs Flag10,TKey100msBit ;for +/- Key power on time FlagBit
;
call TimeCount ;accept Timer Count
;----------------------------------------
TCCInt00:
call PWMList ;accept PWM OUTPUT
;----------------------------------------
TCCIntReturn:
mov a,@c_tcc
mov tcc,a
eni
reti
;*****************************************
/*---------------------------------------
Time Count list
----------------------------------------*/
;****************************************
TimeCount:
jbs Flag00,WorkBit ;
jmp TimeReturn
;--------------------------------------
djz RegTime500ms
jmp yimiao
mov a,@0x05
mov RegTime500ms,a
;bs dwan_x500msbit
inc dwan_x
mov a,dwan_x
xor a,@0x04
jbc status,z
clr dwan_x
yimiao:
djz RegTime1s
jmp TimeReturn
mov a,@CTime1s
mov RegTime1s,a
;字母段码动态显示处理
inc word_x
mov a,word_x
xor a,@0x03
jbc status,z
clr word_x
;
djz RegTime1min
jmp TimeReturn
mov a,@CTime1min
mov RegTime1min,a
mov a,@10
mov time_10,a
bc p7,EL
bs Flag10,T1minBit ;for RegT60mins , record all work time
;==60mins, must be shut off.
djz time_ge ;时间显示寄存器个位每分钟减一
jmp timereturn_3 ;没到10分钟返回
mov a,time_shi
xor a,@0x00
jbs status,z
jmp TimeReturn_1
mov a,@0x01
mov time_shi,a
mov a,@0x0a
mov time_ge,a
bs Flag00,TEndBit ;Time Finish FlagBit == 1.
jmp TimeReturn
timereturn_3:
mov a,time_ge
xor a,@0x09
jbs status,z
jmp TimeReturn
jmp TimeReturn_2
TimeReturn_1:
mov a,@0x0a
mov time_ge,a
jmp TimeReturn
TimeReturn_2:
dec time_shi
;-------------------------------------
TimeReturn:
ret
;****************************************
/*----------------------------------------
PWM list for MOTOR
----------------------------------------*/
;****************************************
PWMList:
jbs Flag00,WorkBit
jmp PWMBack
;
jbc Flag20,ModeBit
jmp PWMBack
;-------------------------------------
jbc Flag00,TRelay1sBit ;Keep 1s FlagBit,when Relay work.
jmp PWMBack
;
jbc Flag00,PWMBit
jmp PWM01
;
djz RegT1
jmp PWM01
;重新置数
mov a,RegT1Buff
mov RegT1,a
bs Flag00,PWMBit
;open Motor
bc p5,Motor
;-------------------------------------
PWM01:
djz RegT
jmp PWM02
bc Flag00,PWMBit
mov a,@CT
mov RegT,a
;-------------------------------------
;判断返回的PWMBIT?
;==0,open motor
;==1,close motor
PWM02:
jbc Flag00,PWMBit
jmp PWMBack
jbs teshu,guanma
bs p5,Motor
PWMBack:
ret
;******************************************
/*---------------------------------------
RelayChange list
----------------------------------------*/
;========================================
RelayExchange: ;正反转定时和序
disi
jbs Flag00,TRelay100msBit
jmp RelayReturn
bc Flag00,TRelay100msBit
;jbs Flag10,ModeHandBit
;jmp RelayReturn
jbs Flag00,TRelay1sBit ;PWM OUTPUT Bit accept after Forward Key
jmp RelayReturn
;
djz RegTRelay1s
jmp RelayReturn
mov a,@CTRelay1s
mov RegTRelay1s,a
bc Flag00,TRelay1sBit ;PWM OUTPUT Bit accept after Forward
;---------------------------------------
RelayOnOff:
mov a,Flag10
xor a,@00000001b
mov Flag10,a ;RelayBit CPL
jbs Flag10,RelayBit
jmp RelayOff
;
RelayOn: ;Relay ON
bs p5,Relay
jmp RelayReturn
RelayOff:;Relay OFF
bc p5,Relay
;---------------------------------------
RelayReturn:
eni
ret
;****************************************
/*---------------------------------------
Bell Work list
----------------------------------------*/
Dealy:
disi
mov a,@100
mov lingshi,a
mov a,@50
mov lingshi_1,a
mov a,@50
mov yuanshi,a
Dealy_1:
wdtc
djz lingshi
jmp $-1
mov a,@100
mov lingshi,a
djz lingshi_1
jmp Dealy_1
mov a,@50
mov lingshi_1,a
djz yuanshi
jmp Dealy_1
eni
ret
;========================================
bi_bi_bi: ;特殊的蜂鸣声
bc p7,Bell
call Dealy
bs p7,Bell
call Dealy
bc p7,Bell
call Dealy
bs p7,Bell
call Dealy
bc p7,Bell
call Dealy
bs p7,Bell
call MainIniti
ret
;****************************************
BellWorkOn:
disi
jbs Flag00,TBell100msBit
jmp BellReturn
bc Flag00,TBell100msBit
;
jbs Flag10,BellBit
jmp BellReturn
;-----------------------------------------
bc p7,Bell ;Bell On
djz RegTimeBell ;Bell On Delay time
jmp BellReturn
mov a,@CTimeBell
mov RegTimeBell,a
;-----------------------------------------
bs p7,Bell ;Bell off
bc Flag10,BellBit
;-----------------------------------------
BellReturn:
eni
ret
;******************************************
;开机时LCD显示
Lcdks:
;disi
mov a,@01001000b
mov flagseg,a
mov a,@01111011b
mov flagseg12,a
mov a,@00010001b
mov flagseg11,a
mov a,@00000111b
mov flagseg13,a
mov a,@00000111b
mov flagseg01,a
mov a,@00000111b
mov flagseg14,a
nop
nop
;eni
ret
nop
nop
nop
nop
nop
nop
nop
nop
jmp MainLoop
;******************************************
Key3sScan: ;3秒长按程序
nop
disi
;mov a,0x00
;mov p6,a
jbc Flag10,Key3sLoosenBit
jmp KeyYesLoosen
;---------------------------------------
nop
nop
nop
nop
jbs p5,key1
jmp KeyYes01
jbs p5,key2
jmp KeyYes01
nop
nop
jmP Key3sReturn
;=======================================
;=======================================
KeyYesLoosen:
jbs p5,key1
jmp KeyYesReturn
jbs p5,key2
jmp KeyYesReturn
;---------------------------------------
djz RegWaitTime
jmp KeyYesReturn
mov a,@CWaitTime
mov RegWaitTime,a
bc Flag10,Key3sLoosenBit
;---------------------------------------
KeyYesReturn:
nop
nop
jmp Key3sReturn
;=======================================
;=======================================
KeyYes01:
jbs Flag10,TKey100msBit
jmp Key3sReturn
bc Flag10,TKey100msBit
;---------------------------------------
djz RegKey3sOn
jmp Key3sReturn
mov a,@CKey3sOn
mov RegKey3sOn,a
;---------------------------------------
bs Flag10,Key3sLoosenBit
mov a,Flag00
xor a,@10000000b
mov Flag00,a
;==CPL Flag00,WorkBit ;
jbs Flag00,WorkBit
jmp KeyYes_PowerOff
;---------------------------------------
KeyYes_PowerOn:
mov a,@10
mov time_10,a
mov a,@0x01
mov time_shi,a
mov a,@0x0a
mov time_ge,a
bs Flag00,WorkBit
bs Flag10,BellBit ;Bell Flag Bit ==1
mov a,@0x02
mov RegHandSCount,a
call Lcdks ;调用开LCD显示
nop
nop
nop
nop
mov a,@00001001b
mov flagseg11,a
jmp KeyYesLoosen
;---------------------------------------
KeyYes_PowerOff:
bc Flag00,WorkBit
;close all OUTPUT
call MainIniti
bs Flag10,BellBit ;Bell Flag Bit ==1
jmp KeyYesLoosen
;=======================================
;=======================================
Key3sReturn:
nop
nop
eni
ret
;****************************************
/*----------------------------------------
Main for Initilizate
----------------------------------------*/
;******************************************
MainIniti: ;初始化程序
disi
;clearing memory list
mov a,@0x10
mov r4,a
again01:
clr r0
inc r4
mov a,r4
bc status,z
xor a,@0x3f
jbs status,z
jmp again01
;---------------------------------
clr FlagScan00
clr FlagScan10
clr FlagSeg
;
clr Flag00
clr Flag10
clr Flag20
;
clr Flagseg01
clr Flagseg11
clr Flagseg12
clr Flagseg13
clr flagseg14
clr Teshu
;clr dwan_x
mov a,@0x05
mov RegTime500ms,a
;---------------------------------
;Time initilizaite
mov a,@0x00
mov word_x,a
mov a,@0x00
mov dwan_x,a
mov a,@CTime1ms
mov RegTime1ms,a
mov a,@CTime100ms
mov RegTime100ms,a
mov a,@CTime1s
mov RegTime1s,a
mov a,@CTime1min
mov RegTime1min,a
mov a,@0x01
mov time_shi,a
mov a,@0x0a
mov time_ge,a
mov a,@CTime60mins
mov RegTime60mins,a
;
mov a,@CTRelay1s
mov RegTRelay1s,a
mov a,@10
mov time_10,a
mov a,@02
mov time_lcd,a
;----------------------------------
clr RegKeyValue
clr RegKeyResult
;----------------------------------
mov a,@CWaitTime
mov RegWaitTime,a
;
mov a,@CTimeBell
mov RegTimeBell,a ;bell on delay
;----------------------------------
;mode register /all were seted by mode KEY
clr RegTModeCW
clr RegTModeStop
clr RegTModeCWBuff
clr RegTModeStopBuff
clr RegModeCount
clr RegModeTMC
clr RegModeTMCBuff
clr RegModeMC
;----------------------------------
mov a,@CT
mov RegT,a
mov a,@CHandT1_3
mov RegT1,a
mov RegT1Buff,a
mov a,@0x03 ;Manual speed control
mov RegHandSCount,a
;----------------------------------
mov a,@CKey3sOn ;define +/- Key power on time Register
mov RegKey3sOn,a
mov a,@CKeyTime ;define Key scan waiting time register
mov RegKeyTime,a
;----------------------------------
;禁止P6口唤醒使能
mov a,@0xff
iow iocb
;禁止WDT使能
;mov a,@0x01
;mov ioce,a
;WDT使能
mov a,@0x31
iow ioce
;定义P5/P6/P7为输出
mov a,@00111111b
iow ioc5
mov a,@0x00
iow ioc6
mov a,@01000000b
iow ioc7
;关输出
mov a,@0xff
mov p7,a
mov p6,a
mov a,@00111111b
mov p5,a
;bc p7,stopin
;---------------------------------
;p60-p67/p74-p75内部上拉使能,TCC预分频
mov a,@C_cont
contw
;tcif中断使能
mov a,@0x09 ;tcie 使能TCIF
iow iocf
;bc r3f,tcif
clr r3f ;清TCC溢出标志TCIF
mov a,@C_tcc
mov tcc,a
;---------------------------------------
bc p7,EL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -