⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emctx808moo.dt

📁 这是一个有减肥功能的腰带按摩器
💻 DT
📖 第 1 页 / 共 3 页
字号:


/*------------------------------------------
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 + -