免电源的电话使用计时器
0030 IOW P5 ;PORT 5 OUTPUT
0031 IOW P6 ;PORT 6 OUTPUT
0032 MOV A,@0X01
0033 IOW 0X0F ;ENABLE TCC_INT
0034 MOV A,@0X05 ;1/64
0035 CONTW
0036 ENI
;SCAN ------------------------------------------------------------------------------
SCAN:
0037 MOV A,MIN
HTD:
0038 CLR DDH
H_H:
0039 ADD A,@246 ;A=A-10
003A JBS RF,FC
003B JMP H_L
003C INC DDH
003D JMP H_H
H_L:
003E ADD A,@10
003F CALL T7
0040 IOW P6
0041 MOV P6,A
0042 MOV A,@255 ;DISPLAY DIGIT 0
0043 MOV P5,A
0044 MOV A,DDH
0045 CALL T7
0046 IOW P6
0047 XOR A,@0XFF
0048 MOV P6,A
0049 MOV A,@00 ;DISPLAY DIGIT 1
004A MOV P5,A
004B JMP SCAN
要如何增加小数点秒的闪烁呢?其实看结果一点也不困难(话虽如此却也着实的伤了好几条的脑筋)。
增加001D~0020这四行程序就可迎刃而解了。
效果观察:
看着一秒亮一秒灭的成品,此时此刻仅可用一个”爽”字来形容心情,愈来愈觉得其实单片机制作并不是高不可及啊!
7.好上加好:
如果用示波器来看看制作成果的良好程度时,可以看到显示周期比才近50%左右,让人总觉得可惜,倘若能够让显示周期比接近100%不亦快哉!
再动手改吧.
TC6.ICE
;
; FILE NAME:TC6.DT
; DATE :1999,5,5
; BY :HWANG JYN_GUO
;
; FUNCTION DESCRIPTION:
; USING TCC TO GET 1 SEC INTERRUPT
; 32768/(2*64*256)= 1 SEC
; CRYSTAL MODE 32768 Hz
; 2 CYCLE AND 2 CLOCK MODE
;
PC == 02
RF == 03 ;STATUS
FZ == 02 ;FLAG OF ZERO
FC == 00 ;FLAG OF CARRY
P5 == 0X05 ;PORT 5
P6 == 0X06 ;PORT 6
DL == 0X10 ;DELAY LOOP
MIN == 0X11 ;MINUTE
SEC == 0X12 ;SECOND
DD == 0X13 ;DISPLAY DIGIT
DDH == 0X14 ;DISPLAY DIGIT HIGH
AB == 0X15 ;A BACK_UP
RFB == 0X16 ;RF BACK_UP
FG == 0X17 ;FLAG
ORG 0
0000 JMP INIT ;PROGRAM START
ORG 8
;TCC INTERRUPT-----------------------------------------------------------------
TCCI:
0008 MOV AB,A ;AB <- A
0009 SWAP AB ;AB <- BA
000A SWAPA RF
000B MOV RFB,A ;RFB<- FR
000C COM FG
000D INC SEC
CHECK:
000E MOV A,SEC
000F SUB A,@59 ;59-SEC=A
0010 JBC RF,FC
0011 JMP C_MIN
0012 CLR SEC
0013 INC MIN
C_MIN:
0014 MOV A,MIN
0015 SUB A,@99 ;99-MIN=A
0016 JBS RF,FC
0017 CLR MIN
TCCE:
0018 SWAPA RFB
0019 MOV RF,A ;RF<- RFB
001A SWAPA AB ;A <- BA
001B BC 0X0F,0 ;CLEAR TCC_INT
001C RETI
;TABLE 7 SEGEMENT--------------------------------------------------------
T7:
001D CALL TABLE
001E JBC FG,00
001F XOR A,@0X80
0020 RET
;TABLE ----------------------------------------------------------------------------
TABLE:
0021 ADD PC,A ; GFE DCBA
0022 RETL @0B01000000 ;0 0100 0000
0023 RETL @0B01111001 ;1 0111 1001
0024 RETL @0B00100100 ;2 0010 0100
0025 RETL @0B00110000 ;3 0011 0000
0026 RETL @0B00011001 ;4 0001 1001
0027 RETL @0B00010010 ;5 0001 0010
0028 RETL @0B00000010 ;6 0000 0010
0029 RETL @0B01011000 ;7 0101 1000
002A RETL @0B00000000 ;8 0000 0000
002B RETL @0B00010000 ;9 0001 0000
;DELAY ----------------------------------------------------------------------------
DELAY:
002C MOV P5,A ;增加显示时间之比
002D MOV A,@20
002E MOV DL,A
D_1:
002F DJZ DL
0030 JMP D_1
0031 MOV A,@0XFF
0032 IOW P6
0033 RET
;INIT --------------------------------------------------------------------------------
INIT:
0034 MOV A,@0X00
0035 MOV MIN,A
0036 MOV SEC,A
0037 IOW 0X0E ;DISABLE WDT
0038 IOW P5 ;PORT 5 OUTPUT
0039 IOW P6 ;PORT 6 OUTPUT
003A MOV A,@0X01
003B IOW 0X0F ;ENABLE TCC_INT
003C MOV A,@0X05 ;1/64
003D CONTW
003E ENI
;SCAN -----------------------------------------------------------------------------
SCAN:
003F MOV A,MIN
HTD:
0040 CLR DDH
H_H:
0041 ADD A,@246 ;A=A-10
0042 JBS RF,FC
0043 JMP H_L
0044 INC DDH
0045 JMP H_H
H_L:
0046 ADD A,@10
0047 CALL T7
0048 IOW P6
0049 MOV P6,A
004A MOV A,@255 ;DISPLAY DIGIT 0
004B CALL DELAY
004C MOV A,DDH
004D CALL T7
004E IOW P6
004F XOR A,@0XFF
0050 MOV P6,A
0051 MOV A,@00 ;DISPLAY DIGIT 1
0052 CALL DELAY
0053 JMP SCAN
人的眼眼睛实在很容易被欺骗,只要扫描频率大于30Hz其实已经看不到闪烁的现象,故在不产生闪烁的现象中如何增加显示周期比呢?
增加显示时之时间,故这里增加了一个DELAY子程序(002C--0033行所示)供扫描显示时呼叫之用。固定的在个位数及拾位数显示时各呼叫一次来增加显示周期比。
效果观察:
增加了DELAY子程序之后约可提升亮度一倍左右。
8.要善始善终-----永不死机:
正当要关掉ICE准备烧写OTP的时候,仔细想想程序才那么小小的,留那么多的空白做什么?不妨拿来「增加稳定度」之用。
还要动手.?
TC7.ICE
;
; FILE NAME:TC7.DT
; DATE :1999,5,5
; BY :HWANG JYN_GUO
;
; FUNCTION DESCRIPTION:
; USING TCC TO GET 1 SEC INTERRUPT
; 32768/(2*64*256)= 1 SEC
; CRYSTAL MODE 32768 Hz
; 2 CYCLE AND 2 CLOCK MODE
;
IAR == 00 ;INDIRECT AR
PC == 02
RF == 03 ;STATUS
RSR == 04 ;RAM SELECTOR
FZ == 02 ;FLAG OF ZERO
FC == 00 ;FLAG OF CARRY
P5 == 0X05 ;PORT 5
P6 == 0X06
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论