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

📄 timcard.h

📁 非常经典的控制打卡卡钟的步进电机程序,很有参考价值
💻 H
字号:
/*=========================================
ProjectName:    Time Card
McuType:        EM78569
FileName:       TimCard.h
===========================================*/
;Special RAM 0x10-->0x1F
;------------------------
RSRbak         EQU 0x10
;------------------------ 
TimeFlag       EQU 0x11
BetPower       EQU 0x11
SecondFlag  == 0
MinutFlag   == 1
HourFlag    == 2
Tim_05s     == 6
halfSecond  == 7
Bak_Tim     == 3	;1:当前为省电模式标记
Bet_10V     == 4        ;电池有10V 
Bet_13V     == 5        ;电池有13V
;------------------------ 
SysFlag        EQU 0x12
keyPressed  == 0        ;1/0->有键按下/无键按下   
keyTime     == 1        ;1/0->时间到,5ms扫描一次
keyMult     == 2        ;有多个键按下
keyUp       == 3        ;0-是否松手
Fcontinue   == 4        ;0/1--闪烁/不闪烁
FhaveCard   == 5        ;Card in
FCardMove   == 6        ;Card moved
FStepMark   == 7        ;记录 Step 的位置
FclockHole  == 3        ;Clock se sign
;------------------------
PowerFlag      EQU 0x13
_onFlag     == 0        ;0/1--off/on
CorFlag     == 1        ;0/1--Black/Red
BellOnFlag  == 2        ;0/1--Music off/on
isCKBell    == 3        ;响铃
isCKBs      == 4        ;变色
isCKFL      == 5        ;换栏
FPErr       == 6        ;出错
SCorFlag    == 7        ;0/1--Black/Red,Setups
;----------------------------   
SetupFlag      EQU 0x14		;7夏令时标记,6进入菜单功能时用
FhaveClr    == 0        ;有自动变色功能
FhaveMusic  == 1        ;有音乐功能
FhaveClm    == 2        ;有自动移位功能 
clr812      == 3        ;只用有功能设定中才用到,小心使用
_FAC        == 5

;---------------------------- 
KeyBuf         EQU 0x15
Key0Flag    == 0
Key1Flag    == 1
Key2Flag    == 2
Key3Flag    == 3
Key4Flag    == 4
Key5Flag    == 5
KeyBufBak      EQU 0x16
;----------------------------
KeyStore       EQU 0x17

;----------------------------
KeyPtr         EQU 0x18   ;用于扫描次数计数
;----------------------------
ColumnFlag     EQU 0x19   ;记录在哪一个栏位
_Lw1        == 0          ;以后要检测这几个栏位标志
_lw2        == 1          ;当前栏位
_lw3        == 2
_slw1       == 4          ;系统设定的栏位
_slw2       == 5
_slw3       == 6
;----------------------------
LWCNT          EQU KeyBufBak  ;计算栏位
LWCNT1         EQU KeyPtr

HW_CNT         EQU 0x1A       ;HwBak -> bank2

PrtFlag        EQU 0x1B
FOver8      == 0   ;栏位多于256
FOver81     == 1   ;栏位多于256
FLine       == 2   ;保护线
FcntLw      == 3   ;计算栏位的宽
FcntLong    == 4   ;计算栏位的深
FwaitOver   == 5
Fhave0      == 6    
Fhave1      == 7
;----------------------------
Cnt1Ptr        EQU 0x1C   ;980uS
Cnt2Ptr        EQU 0x1D   ;5ms
;----------------------------
BUZZER_PTR     EQU 0x1E	  ;TemPTR1
TemPTR         EQU 0x1F
S_W_PTR        EQU TemPTR     ;设定星期中用到,以后注意不要重用         
;----------------------------
;Bank0 RAM   0x20-->0x3F;20-2F为系统的数据,30-3F为程序空间
;以后默认BANK为BANK0,主要做一些与系统相关的参数设定
s_Time_Addr    EQU 0x20
s_Second       EQU s_Time_Addr+0 ;0x20
s_Minute       EQU s_Time_Addr+1 ;0x21  
s_Hour         EQU s_Time_Addr+2 ;0x22
s_Day          EQU s_Time_Addr+3 ;0x23
s_Month        EQU s_Time_Addr+4 ;0x24
s_Year         EQU s_Time_Addr+5 ;0x25
s_week         EQU s_Time_Addr+6 ;0x26以上为123setup

s_chgHour      EQU 0x27  ;换日时间设定,4setup
s_ChgMinute    EQU 0x28  ;

s_EndWeek      EQU 0x29  ;周薪结算日 

s_PrtHtz       EQU 0x2A  ;打印位置水平调正,8setup
s_PrtVtz       EQU 0x2B  ;竖直
;9夏时制设定
s_COLOR_P      EQU 0x2C  ;设定变色的指针
s_Music_P      EQU 0x2D  ;设定响铃的指针

s_Percent      EQU 0x2E  ;百分比设定,10Setup;00:60,01:100,02:12Hour

s_CardFlag     EQU 0x2F	 ;6,夏令时经过零时标记,7,换日时间经过零时标记

CardType    == 0         ;卡片类型,5setup:00正常打印,01上升一格 
TimeFormat  == 1         ;时间制,7setup,00-24,01-12
CardFace    == 2         ;卡片的正反面,11setup,00-有识别,01-无识别
MoneyType   == 3         ;6薪资分类设定 00:月薪,01:周薪

;--------------------------------------------------------------
;--------------------------------------------------------------
s_SetNo        EQU 0x30  ;记录设定时的序号
H_856          EQU s_SetNo
D_SetNo        EQU 0x31  ;显示设定的序号 
S_856          EQU D_SetNo
;----------------------------
s_setFun       EQU 0x32  ;记录设定时的功能选择
isColor     == 0         ;变色设定
isMusic     == 1         ;音乐设定
isColumn    == 2         ;自动换栏
isNormal    == 3         ;进入十一组一般的设定	
LCDbak         EQU s_setFun   ;注意,这里是重用
;----------------------------
setFlag        EQU  0X33
FunIn       == 0         ;0/1,是否进入第一层设定
FunHave2    == 1         ;是否有第二层设定
FunIn2      == 2         ;0/1,前面两个/后面两个
CLR834      == 3         ;清楚834
FlashTime   == 4         ;0/1--改变状态
SummerinEnd == 5         ;0设定开始,1设定结束
WmoneyEnd   == 5         ;周薪的节算日,1-Week
_second_69  == 6         ;0设定第一部份,1设定第二部份
FErr        == 7         ;检测日期是否有错
;----------------------------
;setFlag        EQU  0X33
;FunIn       == 0        ;0/1,是否进入第一层设定
;FunHave2    == 1        ;是否有第二层设定
;FunIn2      == 2        ;0/1,前面两个/后面两个
;CLR834      == 3        ;清楚834
;FlashTime   == 4        ;0/1--改变状态
FselectW     == 5        ;0/1--进入星期的设定
Fsecond_s    == 6        ;进入Mode设定
FMusicT      == 7        ;Music 的第二时间设定

;----------------------------
s_Colum_P      EQU 0x34  ;设定自动换栏的指针
s_W_Retail     EQU 0x35  ;每个星期的细节


s_878          EQU s_W_Retail
H_878          EQU S_878  
;----------------------------
H_812          EQU 0x36  ;为十六进制,用于计算
s_812          EQU 0x37  ;只用于显示
H_834          EQU 0x38  ;
s_834          EQU 0x39  ;
;----------------------------
;KeyStore
;isColor    == 0         ;变色设定
;isMusic    == 1         ;音乐设定
;isColumn   == 2         ;自动换栏
isDown      == 3         ;Down
isUp        == 4         ;Up
isEnter     == 5         ;Enter
;----------------------------
;9夏时制设定
S_BgnMonth     EQU  0x3A ;夏时制开始的:月日小时
S_BgnDay       EQU  0x3B ;
S_BgnHour      EQU  0x3C ;
S_EndMonth     EQU  0x3D ;夏时制结束的:月日小时
S_EndDay       EQU  0x3E ;
S_EndHour      EQU  0x3F ;
;----------------------------
;----------------------------
;Bank1 RAM   0x20-->0x3F
ADD1H          EQU 0x20 ;加数1
ADD1L          EQU 0x21 ;
ADD2HH         EQU 0x22 ;
ADD2H          EQU 0x23 ;加数2
ADD2L          EQU 0x24 ;
SUMHH          EQU 0x22 ;和
SUMH           EQU 0x23 ;
SUML           EQU 0x24 ;
SUB1M          EQU 0x20 ;减数
SUB1L          EQU 0x21 ;
SUBH           EQU 0x22 ;被减数/差
SUBM           EQU 0x23 ;
SUBL           EQU 0x24 ;                            
MUL1H          EQU 0x20 ;乘数1 
MUL1L          EQU 0x21 ;
MUL2H          EQU 0x25 ;乘数2
MUL2L          EQU 0x26 ;
_MULH          EQU 0x22 ;积
_MULM          EQU 0x23 ;
_MULL          EQU 0x24 ;
DIVH           EQU 0x20 ;除数
DIVL           EQU 0x21 ;
DIV_5          EQU 0x22 ;
DIV_4          EQU 0x23 ;
DIV_3          EQU 0x24 ;被除数
DIV_2          EQU 0x25 ;
DIV_1          EQU 0x26 ;
R_DIVH         EQU 0x27 ;商
R_DIVL         EQU 0x28 ;
REMAND_H       EQU 0x23 ;余数
REMAND_L       EQU 0x24 ;
HH_2           EQU 0x20 ;
HH_1           EQU 0x21 ;
DD_2           EQU 0x22 ;
DD_1           EQU 0x23 ;
DH_BUF         EQU 0x25 ;

Math_PTR       EQU 0x29 ;
PRT_TEM_PTR    EQU Math_PTR
KS_DAY         EQU 0x2A

 
D_Year         EQU 0x3B ;
D_Month        EQU 0x3C ;
D_Day          EQU 0x3D ;显示的时间
D_Hour         EQU 0x3E ;
D_Minute       EQU 0x3F ;

PRT_Addr_Base  EQU 0x20
Date_Ptr_H     EQU PRT_Addr_Base+0
Date_Ptr_L     EQU PRT_Addr_Base+1
Date_Date_Tem  EQU PRT_Addr_Base+2
Date_Data_H    EQU PRT_Addr_Base+4 
Date_Data_L    EQU PRT_Addr_Base+5
Hour_Ptr_H     EQU Date_Ptr_H
Min_Ptr_H      EQU Date_Ptr_H

;------------------------------
;Setup temp buf
N_P_Hour       EQU 0x2E   ;stop Power time
N_P_Min        EQU 0x2F   
_t_c_Hour      EQU 0x30   ;for setup color
_t_c_Mintue    EQU 0x31   ;Power off Bs
_t_c_week      EQU 0x32
_t_c_Mode      EQU 0x33

_t_M_Hour      EQU 0x30   ;for setup Music  
_t_M_Mintue    EQU 0x31
_t_M_week      EQU 0x32
_t_M_Mode      EQU 0x33
_t_M_eMintue   EQU 0x34
_t_M_eSecond   EQU 0x35

_t_L_Hour      EQU 0x30    ;for setup column
_t_L_Mintue    EQU 0x31    ;Power off FL
_t_L_week      EQU 0x32
_t_L_Mode      EQU 0x33


ss_F_Ptr       EQU 0x36
s_D_No         EQU 0x37
sF_Fun_Ptr     EQU 0x38     ;用于在设定中已有的组数
Del_Fun_Ptr    EQU 0x38     ;计数多个键按下 

Bell_Mintue    EQu 0x39
Bell_Second    EQU 0x3A

Tem_sHour      EQU 0x20     ;存入只是临时用
Tem_SMintue    EQU 0x21
Tem_sWeek      EQU 0x22
Bell_Mode      EQU 0x23
;----------------------------
;----------------------------
;Bank2 RAM   0x20-->0x3F
W_Card_Ctr     EQU 0x20    ;计数等待取走卡时间
TureCardCtr    EQU KeyBuf  ;是否是卡,要注意变量




FL_Time_Cnt    EQU 0x30    ;自动换栏时间
LWbak          EQU 0x31    ;备份栏位
HwBak          EQU 0x32    ;备份打印的深度
HwBakH         EQU 0x33    ;备份打印深度高位

Clock_Hour     EQU 0x34    ;用作计算时的临时变量
Clock_Min      EQU 0x35    ;
Ac_Hour        EQU 0x36    ;市电停时的变量
Ac_Min         EQU 0x37     

AD_H           EQU 0x38    ;
AD_L           EQU 0X39    ;
AD_PTR         EQU 0x3B    ;AD计数器
AD_FLAG        EQU 0x3A    ;
B_Bet_Icon  == 0
B_INT_V1    == 1
B_INT_V2    == 2
B_INT_V3    == 3
B_INT_V4    == 4
B_INT_V5    == 5  
AD_EndFlag  == 7           ;

;_INT_V2    == 1
;_INT_V1    == 2
;_INT_V3    == 3
;_Bet_Icon  == 5
;_INT_V5    == 6
;_INT_V4    == 7
DelayNoTem     EQU 0x3C
_TEM_ICON      EQU 0x3D
NumPtrH        EQU 0x3E
NumPtrL        EQU 0x3F
ERR_Second     EQU 0x3E
ERR_NUM        EQU 0x3F
;----------------------------
;Bank3 RAM   0x20-->0x3F
;R3E
;DATA_BAK     EQU 0x35  ;
;TemPTR1        EQU 0x1E   ;

;============================================
;Ram2560 PrtBuf 50Bytes,COLOR 4*24 = 96
;============================================
;Print Data Buf. 50Bytes
;----------------------------
;PRT_DATA_BUF   EQU 0x20
;PRT_PTR        EQU KeyBuf 
;----------------------------
;0xA0--0xFF  COLOR 4*24 = 96,
_scor_Hour      EQU 0xA0
_scor_Mintue    EQU _scor_Hour+1
_SCor_Week      EQU _scor_Hour+2
_SCor_Mode      EQU _scor_Hour+3


;-------------------------------------------
;Ram2561  保存24组Music,COLUMN的设定数据
;-------------------------------------------
;0x00--0x8F  total 144bytes Music 6*24 = 144
_sMzc_Hour      EQU 0x00
_sMzc_Mintue    EQU _sMzc_Hour+1
_SMzc_Mode      EQU _sMzc_Hour+2
_sMzc_lMintue   EQU _sMzc_Hour+3
_sMzc_lsecond   EQU _sMzc_Hour+4
_SMzc_Week      EQU _sMzc_Hour+5

;------------------------------------------- 
;0xA0--0xFF  total 144bytes,Column 4*24 = 96
_scmn_Hour      EQU 0xA0
_scmn_Mintue    EQU _scmn_Hour+1
_Scmn_Mode      EQU _scmn_Hour+2
_Scmn_Week      EQU _scmn_Hour+3


;============================================
;The following is constant data.
;============================================
;The following is LCD data. Address LCD
s_Add_LCD81    EQU 0x00
S_ADD_LCD82    EQU 0x01
S_ADD_LCD83    EQU 0x02
S_ADD_LCD84    EQU 0x03
S_ADD_LCD85    EQU 0x04
S_ADD_LCD86    EQU 0x05
S_ADD_LCD87    EQU 0x06
S_ADD_LCD88    EQU 0x07
s_Add_LCDw     EQU 0x06
S_ADD_LCDP1    EQU 0x07
S_ADD_LCDP2    EQU 0x09
_LCD_SAT   == 1
_LCD_FRI   == 2
_LCD_THU   == 3
_LCD_WED   == 4
_LCD_TUE   == 5
_LCD_MON   == 6
_LCD_SUN   == 7


;S_ADD_LCDP1    EQU 0x07
_INT_V2    == 1
_INT_V1    == 2
_INT_V3    == 3
;S_ADD_LCDP2    EQU 0x09
_Ac_Icon   == 4
_Bet_Icon  == 5
_INT_V5    == 6
_INT_V4    == 7

s_LCD_NOL      EQU 0x05 ;在设定中显示NORMAL的设定功能号       
s_LCD_NOH      EQU 0x06
s_LCD_YearL    EQU 0x00 ;year low bytes
s_LCD_YearH    EQU 0x01 ;year high bytes

;============================================
;----------------------------
LEDPORT        EQU PORTB
LED_1       == 0
LED_2       == 1
LED_3       == 2
LED_4       == 3
LED_5       == 4
LED_6       == 5
LedCtrPort     EQU PORTC
Led_En      == 7  
;----------------------------
Key_In_Line    EQU PORT8
In_Line_1   == 0
In_Line_2   == 1
In_Line_3   == 2
M_CARIN        EQU PORT8     ;入卡M
CARIN_I     == 3
CARIN_O     == 4

CardInPort     EQU PORT8
PA_EN       == 7              ;入卡的深度计数
PA_S0       == 6              ;起始住置
PA_S1       == 5              ;正反面
;----------------------------
Key_Out_Line   EQU PORT7
Out_Line_1  == 6
Out_Line_2  == 7

SetupPort      EQU PORT7
SetBit      == 5             ;低电平进入设定
CarInt      == 0             ;入卡中断产生
;----------------------------
;Port6
PowerPort      EQU Port6 
AC_ON       == 7                 ;检测市电
sw_12       == 5             ;12V swicth
PR_ST       == 6        ;4做了AD ;One Time 12mm, start Print
PR_EN       == 3
M_PRT          EQU PORT6
M_PRTR      == 1             ;电机方向
M_PRTL      == 2             ;电磁铁方向
      
;----------------------------
StepM0PORT     EQU Port9
M0A         == 4 ;3 ;3       
M0B         == 5 ;2 ;2   
M0C         == 2 ;5 ;5   
M0D         == 3 ;4 ;4   
CLOCK_SE    == 4             ;CLOCK FACE SIGN
;----TEST------------
M0AR        == 4 
M0BR        == 5
M0CR        == 2
M0DR        == 3
;----------------------------
;----------------------------
;----------------------------
PRT_D_PORT     EQU PORTB
PRT_D_PORT1    EQU PORTC
PRT_BIT9     == 5
PRT_C_PORT     EQU PORTC
PRT_EN       == 6 
;-----------------------------
;PORTC
Mic_con      == 4  ;PORTC
REALY        == 3  ;BELL
SCL          == 0  ;电磁铁
Wavebit      == 2  ;wave bit

;============================================
;Peter.yu Marked in DongGuan City 2004-4-1 
;============================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -