Vous êtes sur la page 1sur 14

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.

com

; CLOCHPIC - Video routines ; ; 7 segment display routines (for compact character tables)

TITLE

"Video"

LIST P=16C84 NOLIST ; d #Define W #Define F

0 1

; PIC16C84 defines cblock 0x00 Ind0,RTCC,PCL,Status,FSR,PortA,PortB endc cblock 0x08 EEData,EEAdr,PCLatH,IntCon endc ; Status bits cblock 0x00 C,DC,Z,PD,TO,RP0,RP1,IRP endc ; IntCon bits cblock 0x00 RBIF,INTF,RTIF,RBIE,INTE,RTIE,EEIE,GIE endc ; Page Option TrisA TrisB EECon1 EECon2 1 registers EQU 01H EQU 05H EQU 06H EQU 08H EQU 09H 0CH

RAMbase EQU

; Application specific hardware - PAL level A/D sync, black and white #define White #define Sync ; Sync macros ; DNOP - Double NOP. Delay of 2 cycles, takes only one instruction DNOP MACRO LOCAL Label Label GOTO Label+1 ENDM ; Delay3W - Delay 3 * W cycles, three instructions Delay3W MACRO PortA,0 PortA,1

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

Label

LOCAL MOVWF DECFSZ GOTO ENDM

Label Delay Delay Label

; 1 \ ; n+1 } 3n ;2n-2/

;Status conditional macros SKIPCC MACRO BTFSC Status,C ENDM SKIPCS MACRO BTFSS Status,C ENDM SKIPZ MACRO BTFSS Status,Z ENDM SKIPNZ MACRO BTFSC Status,Z ENDM LIST CBLOCK RAMbase Delay,Count HSeg1,HSeg2 SegG,SegF,SegE,SegD,SegC,SegB,SegA Seg1,Seg2,Seg3,Seg4,Seg5,Seg6,Seg7,Seg8 HrU,HrT,MiU,MiT,SeU,SeT,SubSec DyU,DyT,MoU,MoT,YrU,YrT ENDC ORG GOTO 0 Main

ORG 4 RETURN ; Number segment lookup ; This has a delay of 6 including the CALL NumTbl ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW PCL B'1111110' B'0110000' B'1101101' B'1111001' B'0110011' B'1011011' B'1011111' B'1110000' B'1111111' B'1111011'

Main MOVLW TRIS MOVLW B'11100' PortA B'11111111'

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

TRIS BCF BSF MOVLW MOVWF MOVLW MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVLW MOVWF MOVWF MOVLW MOVWF MOVLW MOVWF

PortB White Sync 0 PCLatH 0 ;Initialise clock to SeU SeT ; 01/01/95 MiU ; 00-00 00.00 MiT HrU HrT DyT MoT SubSec 1 DyU MoU 9 YrT 5 YrU

;Output black level

; Frame starts here. ; ; Frame must be exactly 312.5 lines long, each line 64 cycles. ; That ensures frame rate of exactly 50Hz to crystal accuracy. ;5 Long Equalisation pulses Frame BCF Sync DNOP MOVLW 4 MOVWF Count MOVLW 8 Delay3W BSF Sync NOP BCF Sync NOP DECFSZ Count GOTO Loop1 MOVLW 8 Delay3W NOP BSF Sync NOP ;Main Loop ; 1 ;30us Sync ; 3 ; 4 ; 5 ; 6 6 ;30 30 ;31 31 ;2us Black ;32 32 ; 1 1 ;30us Sync ; 2 2 ; - ; 5 ; 5 ; 29 ; 30 ; 31 ;2us Black ; 32

Loop1

; Now 5 short equalisation pulses, 4 on interlace BCF NOP BSF Sync Sync ; 1 ; 2 ; 3 ;2us Sync ;30us Black

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

Loop2

MOVLW 4 BTFSC SubSec,0 MOVLW 3 MOVWF Count MOVLW 8 Delay3W BCF Sync NOP BSF Sync NOP DECFSZ Count GOTO Loop2 NOP MOVLW 8 Delay3W

; 4 ; ; 3 on interlace (SubSec odd) ; 6 ; 7 ; 8 8 8 8 ;32 32 32 32 ; 1 1 1 1 ;2us Sync ; 2 2 2 2 ; 3 3 3 3 ;30us Black ; 4 4 4 4 ; - - - ; 7 7 7 ; 7 ; 8 ; 32

; Done that (phew!) ; Time now for 304 visible lines ; Now some more black lines BCF Sync MOVLW D'30' CALL BlkLns ;Message 'SoFt-ball' BCF Sync CALL Delay4 BSF Sync MOVLW B'1001110' MOVWF Seg1 MOVLW B'0001110' MOVWF Seg2 MOVLW B'1111110' MOVWF Seg3 MOVLW B'1001110' MOVWF Seg4 MOVLW B'0110111' MOVWF Seg5 MOVLW B'1100111' MOVWF Seg6 MOVLW B'0110000' MOVWF Seg7 MOVLW B'1001110' MOVWF Seg8 MOVLW D'13' Delay3W DNOP

; 1 ; 2 ;64

;5us Sync

; 1 ; 5 ; 6 ; 7 ; 8 ; 9 ;10 ;11 ;12 ;13 ;14 ;15 ;16 ;17 ;18 ;19 ;20 ;21 ;22 ;23 ;62 ;64

;Display segments (this takes 60 lines) BCF Sync ; 1 CALL DisSeg ;64 ; 16 black lines BCF Sync MOVLW D'16' CALL BlkLns

; 1 ; 2 ;64

;5us Sync

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

; Translate date to segments BCF Sync CALL Delay4 BSF Sync MOVF DyT,W CALL NumTbl MOVWF Seg1 MOVF DyU,W CALL NumTbl MOVWF Seg2 MOVLW B'0100101' MOVWF Seg3 MOVF MoT,W CALL NumTbl MOVWF Seg4 MOVF MoU,W CALL NumTbl MOVWF Seg5 MOVLW B'0100101' MOVWF Seg6 MOVF YrT,W CALL NumTbl MOVWF Seg7 MOVF YrU,W CALL NumTbl MOVWF Seg8 CALL Delay6

; 1 ; 5 ; 6 ; 7 ;13 ;14 ;15 ;21 ;22 ;23 ;24 ;25 ;31 ;32 ;33 ;39 ;40 ;41 ;42 ;43 ;49 ;50 ;51 ;57 ;58 ;64

;Display segments (this takes 60 lines) BCF Sync ; 1 CALL DisSeg ;64 ; 16 black lines BCF Sync MOVLW D'16' CALL BlkLns ; Translate time to segments BCF Sync CALL Delay4 BSF Sync MOVF HrT,W CALL NumTbl MOVWF Seg1 MOVF HrU,W CALL NumTbl MOVWF Seg2 MOVLW B'0000001' MOVWF Seg3 MOVF MiT,W CALL NumTbl MOVWF Seg4 MOVF MiU,W CALL NumTbl MOVWF Seg5 MOVLW B'0000000'

; 1 ; 2 ;64

;5us Sync

;1 ;5 ;6 ;7 ;13 ;14 ;15 ;21 ;22 ;23 ;24 ;25 ;31 ;32 ;33 ;39 ;40 ;41

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

MOVWF MOVF CALL MOVWF MOVF CALL MOVWF CALL

Seg6 SeT,W NumTbl Seg7 SeU,W NumTbl Seg8 Delay6

;42 ;43 ;49 ;50 ;51 ;57 ;58 ;64

;Display segments (this takes 60 lin es) BCF Sync CALL DisSeg ;Increment time BCF Sync INCF SubSec MOVLW -D'50' ADDWF SubSec,W MOVLW 0 BSF Sync SKIPCC ; MOVWF SubSec SKIPCC INCF SeU MOVLW -D'10' ADDWF SeU,W MOVLW 0 SKIPCC MOVWF SeU SKIPCC INCF SeT MOVLW -D'6' ADDWF SeT,W MOVLW 0 SKIPCC MOVWF SeT SKIPCC INCF MiU MOVLW -D'10' ADDWF MiU,W MOVLW 0 SKIPCC MOVWF MiU SKIPCC INCF MiT MOVLW -D'6' ADDWF MiT,W MOVLW 0 SKIPCC MOVWF MiT SKIPCC INCF HrU MOVLW -D'10' ADDWF HrU,W MOVLW 0 SKIPCC MOVWF HrU

;1 ;2 Increment 1/50th sec ;3 ;4 Carry now set if second has expired ;5 ;6 Zero SubSec if =50 ;8 ;10 ;11 ;12 ;13 ;14 ;15 ;16 ;17 ;18 ;19 ;20 ;21 ;22 ;23 ;24 ;25 ;26 ;27 ;28 ;29 ;30 ;31 ;32 ;33 ;34 ;35 ;36 ;37 ;38 ;39 ;40 ;41 ;42 ;43 And increment Second Units Carry if needed Second Units ->Tens

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

SKIPCC INCF HrT MOVF HrU,W so BTFSC ADDLW BTFSC ADDLW ADDLW MOVLW SKIPCC MOVWF SKIPCC MOVWF SKIPCC INCF CALL HrT,0 D'10' HrT,1 D'20' -D'24' 0 HrU HrT DyU Delay6

;44 ;45 ;46 ; Now check for Hours=24, and zero if

;48 ;50 ;51 ;52 ;54 ;56 ;58 ;64

; Some black lines BCF Sync MOVLW D'59' CALL BlkLns

; 1 ; 2 ;64

;5us Sync

; insert half line here on interlace ; Sync

; Now 5 short equalisation pu lses ; prefixed by half video line on interlace ; Slight bodge of CCIR/PAL - the half line segment is actually a short eq pulse BCF Sync ; 1 ;2us Sync NOP ; 2 BSF Sync ; 3 ;30us Black MOVLW 4 ; 4 BTFSS SubSec,0 ; MOVLW 5 ; 6 MOVWF Count ; 7 Loop6 MOVLW 8 ; 8 8 8 8 Delay3W ;32 32 32 32 BCF Sync ; 1 1 1 1 ;2us Sync NOP ; 2 2 2 2 BSF Sync ; 3 3 3 3 ;30us Black NOP ; 4 4 4 4 DECFSZ Count ; - - - GOTO Loop6 ; 7 7 7 MOVLW 7 ; 7 Delay3W ; 28 DNOP ; 30 GOTO Frame ; 32 ; Delay routines Delay7 NOP

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

Delay6 NOP Delay5 NOP Delay4 RETURN ; Some black lines BlkLns ADDLW -1 BSF Sync MOVWF Count DNOP Loop5 MOVLW D'17' MOVWF Delay LoopD9 DECFSZ Delay GOTO LoopD9 NOP DNOP BCF Sync CALL Delay4 BSF Sync DECFSZ Count GOTO Loop5 NOP MOVLW D'17' Delay3W NOP RETURN

; 1 ; 1 ; 1 1 1 1 ; 1 1 1 1 ;18 18 18 18 ;32 32 32 32 ; 1 1 1 1 ; 2 2 2 2 ; 1 1 1 1 ; 4 4 4 4 ; 1 1 1 1 ; 1 1 1 2 ; 2 2 2 ; 1 ; 1 ; 51 ; 1 ; 2

;59us black

;5us Sync ;59us Black

;Display segments ; ; Call immediately after BCF Sync, takes 60 line periods, returns control at ; time 64us ; ; On entry segment are in Seg1-8, order B'ABCDEFG' ; DisSeg MOVLW SegG ; 4 ;Line 1 black MOVWF FSR ; 5 BSF Sync ; 6 MOVLW 0 ; 7 MOVWF SegA ; 8 MOVWF SegB ; 9 MOVWF SegC ;10 MOVWF SegD ;11 MOVWF SegE ;12 MOVWF SegF ;13 MOVWF SegG ;14 MOVLW 6 ;15 Delay3W ;33 DNOP ;35 CALL ConSeg ;64 BCF Sync ; 1 ;Line 2 black CALL Delay4 ; 5 BSF Sync ; 6 CALL ConSeg ;35 CALL ConSeg ;64 BCF Sync ; 1 ;Line 3 black CALL Delay4 ; 5

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

BSF CALL CALL BCF CALL BSF CALL CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF

Sync ConSeg ConSeg Sync Delay4 Sync ConSeg ConSeg Sync RSegA Sync RSegA Sync RSegA Sync RSegA Sync RSegA Sync RSegA Sync RSegA Sync RSegA Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync RSegFB Sync

; 6 ;35 ;64 ; 1 ; 5 ; 6 ;35 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1

;Line 4 black

;Line 5 ;Line 6 ;Line 7 ;Line 8 ;Line 9

Segment A Segment A Segment A Segment A Segment A

;Line 10 Segment A ;Line 11 Segment A ;Line 12 Segment A ;Line 13 Segment BF ;Line 14 Segment B,F ;Line 15 Segment B,F ;Line 16 Segment B,F ;Line 17 Segment B,F ;Line 18 Segment B,F ;Line 19 Segment B,F ;Line 20 Segment B,F ;Line 21 Segment B,F ;Line 22 Segment B,F ;Line 23 Segment B,F ;Line 24 Segment B,F ;Line 25 Segment B,F ;Line 26 Segment B,F ;Line 27 Segment B,F ;Line 28 Segment B,F ;Line 29 Segment G

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL

RSegG Sync RSegG Sync RSegG Sync RSegG Sync RSegG Sync RSegG Sync RSegG Sync RSegG Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegEC Sync RSegD Sync RSegD Sync RSegD Sync RSegD Sync RSegD

;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64 ; 1 ;64

;Line 30 Segment G ;Line 31 Segment G ;Line 32 Segment G ;Line 33 Segment G ;Line 34 Segment G ;Line 35 Segment G ;Line 36 Segment G ;Line 37 Segment C,E ;Line 38 Segment C,E ;Line 39 Segment C,E ;Line 40 Segment C,E ;Line 41 Segment C,E ;Line 42 Segment C,E ;Line 43 Segment C,E ;Line 44 Segment C,E ;Line 45 Segment C,E ;Line 46 Segment C,E ;Line 47 Segment C,E ;Line 48 Segment C,E ;Line 49 Segment C,E ;Line 50 Segment C,E ;Line 51 Segment C,E ;Line 52 Segment C,E ;Line 53 Segment D ;Line 54 Segment D ;Line 55 Segment D ;Line 56 Segment D ;Line 57 Segment D

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

BCF CALL BCF CALL BCF GOTO

Sync RSegD Sync RSegD Sync RSegD

; 1 ;64 ; 1 ;64 ; 1 ;64

;Line 58 Segment D ;Line 59 Segment D ;Line 60 Segment D

; Line drawing routines - call at time 1, return at time 64 s RSegA MOVF SegA,W ; 4 MOVWF HSeg1 ; 5 BSF Sync ; 6 CALL Delay5 ;11 GOTO SegLine1 ;64 RSegG MOVF MOVWF BSF CALL GOTO MOVF MOVWF BSF CALL GOTO SegG,W HSeg1 Sync Delay5 SegLine1 SegD,W HSeg1 Sync Delay5 SegLine1 SegF,W HSeg1 Sync SegB,W HSeg2 ; 4 ; 5 ; 6 ;11 ;64 ; 4 ; 5 ; 6 ;11 ;64 ; 4 ; 5 ; 6 ; 7 ; 8 ;11 ;64 ; 4 ; 5 ; 6 ; 7 ; 8 ;11 ;64

RSegD

RSegFB MOVF MOVWF BSF MOVF MOVWF DNOP NOP GOTO RSegEC MOVF MOVWF BSF MOVF MOVWF DNOP NOP GOTO

SegLine2 SegE,W HSeg1 Sync SegC,W HSeg2

SegLine2

;ConSeg - Convert Seg1-8 to SegA-G ; ;On entry FSR=SegA, Seg1 -8=B'GFEDCBA' segments ; Call 7 times ; ; Takes 29 cycles including CALL ConSeg BTFSC BSF BTFSC BSF BTFSC Seg1,0 Ind0,0 Seg2,0 Ind0,1 Seg3,0 ;16 ; ; ; ; ;Map Seg1-8 LSB to Ind0

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

BSF BTFSC BSF BTFSC BSF BTFSC BSF BTFSC BSF BTFSC BSF RRF RRF RRF RRF RRF RRF RRF RRF INCF RETURN

Ind0,2 Seg4,0 Ind0,3 Seg5,0 Ind0,4 Seg6,0 Ind0,5 Seg7,0 Ind0,6 Seg8,0 Ind0,7 Seg1 Seg2 Seg3 Seg4 Seg5 Seg6 Seg7 Seg8 FSR

; ; ; ; ; ; ; ; ; ; ; ;8

;Rotate right Seg1 -8

;1 ;2

;Increment FSR to next segment map

; SegLine1 ; ; On entry, HSeg1 contains bitmap of bars in line ; Execute CALL SegLine 10us into line, next instruction starts at 62 SegLine1 BTFSC HSeg1,0 ;13 BSF White ;14 DNOP ;16 NOP ;17 BCF White ;18 BTFSC HSeg1,1 ;19 BSF White ;20 DNOP ;22 NOP ;23 BCF White ;24 BTFSC HSeg1,2 ;25 BSF White ;26 DNOP ;28 NOP ;29 BCF White ;30 BTFSC HSeg1,3 ;31 BSF White ;32 DNOP ;34 NOP ;35 BCF White ;36 BTFSC HSeg1,4 ;37 BSF White ;38 DNOP ;40 NOP ;41 BCF White ;42 BTFSC HSeg1,5 ;43 BSF White ;44 DNOP ;46 NOP ;47 BCF White ;48

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

BTFSC BSF DNOP NOP BCF BTFSC BSF DNOP NOP BCF NOP RETURN SegLine2 BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC BSF BCF BTFSC

HSeg1,6 White

White HSeg1,7 White

White

;49 ;50 ;52 ;53 ;54 ;55 ;56 ;58 ;59 ;60 ;62

HSeg1,0 White White HSeg2,0 White White HSeg1,1 White White HSeg2,1 White White HSeg1,2 White White HSeg2,2 White White HSeg1,3 White White HSeg2,3 White White HSeg1,4 White White HSeg2,4 White White HSeg1,5 White White HSeg2,5 White White HSeg1,6 White White HSeg2,6 White White HSeg1,7

;13 ;14 ;15 ;16 ;17 ;18 ;19 ;20 ;21 ;22 ;23 ;24 ;25 ;26 ;27 ;28 ;29 ;30 ;31 ;32 ;33 ;34 ;35 ;36 ;37 ;38 ;39 ;40 ;41 ;42 ;43 ;44 ;45 ;46 ;47 ;48 ;49 ;50 ;51 ;52 ;53 ;54 ;55

Este documento ha sido elaborado con PDFmail (Copyright RTE Software) http://www.pdfmail.com

BSF BCF BTFSC BSF BCF NOP RETURN

White White HSeg2,7 White White

;56 ;57 ;58 ;59 ;60 ;62

ORG DW END

2007 B'11001'

Vous aimerez peut-être aussi