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

📄 picdream.asm

📁 pic16f8 based clock, it display the time on the TV display. This include source code and sch
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; LE 22/08/1997
; Edited with PFE and assembled with MPASM
; Tristan@Club-Internet.fr or F1CJN @ F6KBF.FRPA (by packet radio)
; 5*7 new routines 
; 7 characters visible scrolling long text on upper line, yes the pic do it !
; 8 Grey level bars in the middle of the screen
; 4 digits clock in the bottom 
; setup of the clock with two push buttons
; the 625 lines TV screen looks like this
; By Alain FORT and Peter KNIGHT 
; Free for public domain by Internet
;
;			  *************
;			  *  T E X T  * this line is scrolling to the left
;			  * grey bars *
;			  *   12:00   *    (This is the clock)
;			  *************
;
; 

	TITLE	"PICDREAM"

	LIST	P=16C84


#Define	W	0
#Define	F	1

	cblock	0x00
		INDF,RTCC,PCL,Status,FSR,PortA,PortB
	endc
	cblock	0x08
		EEData,EEAdr,PClath,IntCon
	endc

	cblock	0x00
		C,DC,Z,PD,TO,RP0,RP1,IRP
	endc

; Page 1 registers
Roption	EQU	01H
TrisA	EQU	05H
TrisB	EQU	06H
RAMbase	EQU	0CH


#define	Sync	PortA,0  ; Synchro out at RA0  (PIN 17)

; 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
	LOCAL	Label
	MOVWF	Delay		
Label	DECFSZ	Delay
	GOTO	Label
	ENDM

SKIPCC	MACRO
	BTFSC	Status,C
	ENDM

SKIPNZ	MACRO
	BTFSC	Status,Z
	ENDM

	LIST

	CBLOCK	RAMbase
		Delay,Count,Count2,Count3,SubSec	; 5 various registers
		HrT,HrU,MiT,MiU,SeU			; 5 clock registers 
		CA0,CA1,CA2,CA3,CA4,CA5,CA6 		; 6 caracters pointers
		Ta0,Ta1,Ta2,Ta3,Ta4,Ta5,Ta6,TNB,TNB1  	; 7 caracter lines pointers
		Ptrtxt					; 1 text pointer	
	ENDC

	ORG	0
	GOTO	Main

	ORG	4
	RETURN

; Table of caracters

Table	ADDWF	PCL,F
Tbase	equ	$
Car0	equ	$-Tbase
CarO	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	; ....***.
Car1	equ	$-Tbase
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001100'	; ....**..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001110'	; ....***.
Car2	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001000'	; ....*...
	RETLW	B'00011111'	; ...*****
Car3	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001' 	;....*...*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000110'	; .....**.
	RETLW	B'00000001'	; .......*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	; ....***.
Car4	equ	$-Tbase
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000110'	; .....**.
	RETLW	B'00001010'	; ....*.*.
	RETLW	B'00010010'	; ...*..*.
	RETLW	B'00011111'	; ...*****
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000010'	; ......*.
Car5	equ	$-Tbase
	RETLW	B'00011111'	; ...*****
	RETLW	B'00010000'	; ...*....
	RETLW	B'00011110'	; ...****.
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	; ....***.
Car6	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010000'	; ...*....
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	; ....***.
Car7	equ	$-Tbase
	RETLW	B'00011111'	; ...*****
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
Car8	equ	$-Tbase
 	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
 	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
 	RETLW	B'00001110'	; ....***.
Car9	equ	$-Tbase
 	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
 	RETLW	B'00001111'	; ....****
	RETLW	B'00000001'	; .......*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	; ....***.	
;B0  	D'70'
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00001000'	; ....*...
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000010'	; ......*.
;B3  	D'75'
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000010'	; ......*.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001000'	; ....*...
CarSP	equ	$-Tbase
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
	RETLW	B'00000000'	; ........
CarA	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011111'	; ...*****
CarH	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011111'	; ...*****
CarU	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001110'	;.....***.
CarD	equ	$-Tbase
	RETLW	B'00011110'	; ...****.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
CarB	equ	$-Tbase
	RETLW	B'00011110'	; ...****.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
CarP	equ	$-Tbase
	RETLW	B'00011110'	; ...****.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011110'	; ...****.
CarL	equ	$-Tbase
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
CarE	equ	$-Tbase
	RETLW	B'00011111'	; ...***** 
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00011100'	; ...***..
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
CarF	equ	$-Tbase
	RETLW	B'00011111'	; ...***** 
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00011100'	; ...***..
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
CarJ	equ	$-Tbase
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00000001'	; .......*
	RETLW	B'00010001'	; ...*...*
CarG	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010011'	; ...*..**
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
CarQ	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010101'	; ...*.*.*
	RETLW	B'00010011'	; ...*..**
CarS	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010000'	; ...*....
	RETLW	B'00001110'	; ....***.
	RETLW	B'00000001'	; .......*
	RETLW	B'00010001'	; ...*...*
CarC	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010000'	; ...*....
	RETLW	B'00010001'	; ...*...*
CarI	equ	$-Tbase
	RETLW	B'00001110'	; ....***.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001110'	; ....***.
CarK	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010010'	; ...*..*.
	RETLW	B'00010100'	; ...*.*..
	RETLW	B'00011000'	; ...**...
	RETLW	B'00010100'	; ...*.*..
	RETLW	B'00010010'	; ...*..*.
CarM	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011011'	; ...**.**
	RETLW	B'00010101'	; ...*.*.*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
CarN	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011001'	; ...**..*
	RETLW	B'00010101'	; ...*.*.*
	RETLW	B'00010011'	; ...*..**
CarY	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001010'	; ....*.*.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
CarR	equ	$-Tbase
	RETLW	B'00011110'	; ...****.
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00011110'	; ...****.
CarV	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
CarX	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00001010'	; ....*.*.
	RETLW	B'00000100'	; .....*..
	RETLW	B'00001010'	; ....*.*.
CarW	equ	$-Tbase
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010001'	; ...*...*
	RETLW	B'00010101'	; ...*.*.*
	RETLW	B'00011011'	; ...**.**
	RETLW	B'00010001'	; ...*...*
CarZ	equ	$-Tbase
	RETLW	B'00011111'	; ...***** 
	RETLW	B'00000001'	; ...... *
	RETLW	B'00000010'	; ..... *.
	RETLW	B'00000100'	; .... *..
	RETLW	B'00001000'	; ....*...
	RETLW	B'00010000'	; ...*....
CarT	equ	$-Tbase
	RETLW	B'00011111'	; ...*****
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..
	RETLW	B'00000100'	; .....*..

Main
	BSF	Status,RP0	;  adressing bank 1
	MOVLW	B'11110'
	MOVWF	TrisA
	MOVLW	B'11000000'
	MOVWF	TrisB		; ports B as outputs except  RB7 and RB6
	BCF	Roption,7	; we need the integrated pull-up resistors
	BCF	Status,RP0	; adressing bank 0 for the rest of the program

	CLRF	SeU	;Initialisation clock at 00.00
	CLRF	MiU
	CLRF	MiT
	CLRF	HrU
	CLRF	HrT
	CLRF	Count3

; Frame starts here.
;
; Frame must be exactly 312.5 Lignes long, each Ligne 64 cycles.
; That ensures frame rate of exactly 50Hz to crystal accuracy.

;5 Long Equalisation pulses

Frame				;Main Loop
	BCF	Sync		; 1		;30us Sync
	DNOP			; 3
	MOVLW	4		; 4
	MOVWF	Count		; 5
Loop1	MOVLW	8		; 6  6
	Delay3W			;30 30
	BSF	Sync		;31 31	;2us Black
	NOP			;32 32
	BCF	Sync		; 1  1	;30us Sync
	NOP			; 2  2
	DECFSZ Count		; -  -
	GOTO	Loop1		; 5
	MOVLW	8		;    5
	Delay3W			;   29
	NOP			;   30
	BSF	Sync		;   31	;2us Black
	NOP			;   32

; Now 5 short equalisation pulses, 4 on interlace

	BCF	Sync		; 1	;2us Sync
	NOP			; 2
	BSF	Sync		; 3	;30us Black
	MOVLW	4		; 4
	BTFSC	SubSec,0	;	; 3 on interlace (SubSec odd)
	MOVLW	3		; 6
	MOVWF	Count		; 7
Loop2	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	Loop2		; 7  7  7
	CLRF	TNB		;          7   RAZ de TBN a chaque trame
	MOVLW	8		;          8
	Delay3W			;         32
		

; 304 visible Lines

; 41 black Lines 
	BCF	Sync		; 1
	MOVLW	D'41'		; 2
	CALL	BlkLns		;64

; ****     INIT TEXTE ******   line  42

	BCF 	Sync
	Call 	Preptxt3

; ****    INIT TEXTE CONTINUED ****** line 43

	BCF 	Sync
	Call 	Preptxt4

;********** DISPLAY TEXTE ********* ( + 60 lines) = 103

	BCF	Sync		; 1
	CALL	DisTxt		;64

; 15 black lines = 118

	BCF	Sync		; 1
	MOVLW	D'15'		; 2
	CALL	BlkLns		;64

; ***** GREY BARS ***** 60 lines = 178

	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64 ligne 10
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64 Line 20
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64 Line 30
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64 Line 40
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64 Line 50
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1
	CALL BARRE		;64
	BCF Sync		;1

⌨️ 快捷键说明

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