DISABLE WDT 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 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
Tags:
|