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

📄 picdream.asm

📁 pic16f8 based clock, it display the time on the TV display. This include source code and sch
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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  

;*****  14  BLACK LINES =192  *****
	BCF	Sync		; 1
	MOVLW	D'14'		; 2
	CALL	BlkLns		;64

;*****  KEYS TEST 1 line = 193 *****
	BCF	Sync		; 1	Line 54
	CALL	TOUCHE		;64

;***** PREPARE CLOCK    =  194 *****
	BCF	Sync		; 1	Line 54
	CALL	PREPH		;64

;***** DISPLAY CLOCK 	= 254  ***** (this takes 60 Lignes)
	BCF	Sync
	CALL	DisTxt

;Increment time
	BCF	Sync		;1
	INCF	SubSec		;2	Increment 1/50th sec
	MOVLW	-D'50'		;3
	ADDWF	SubSec,W	;4	Carry now set if second has expired
	BSF	Sync		;5
	SKIPCC			;6	Zero SubSec if =50
	CLRF	SubSec		;7
	SKIPCC			;8
	INCF	SeU		;9	And increment Second Units
	SKIPCC			;10
	NOP			;11 	seconds counter modulo 256
	MOVLW	-D'60'		;12
	ADDWF	SeU,W		;13	Carry if needed Second Units->Tens
	SKIPCC			;14
	CLRF	SeU		;15
	SKIPCC			;16
	INCF	MiU		;17	Minutes Units
	MOVLW	-D'10'		;18
	ADDWF	MiU,W		;19
	SKIPCC			;20
	CLRF	MiU		;21
	SKIPCC			;22
	INCF	MiT		;23	Minutes tens
	MOVLW	-D'6'		;24
	ADDWF	MiT,W		;25
	SKIPCC			;26
	CLRF	MiT		;27
	SKIPCC			;28
	INCF	HrU		;29
	MOVLW	-D'10'		;30
	ADDWF	HrU,W		;31 
	SKIPCC			;32
	CLRF	HrU		;33
	SKIPCC			;34
	INCF	HrT		;35
	MOVF	HrU,W		;36  Now check for Hours=24
	BTFSC	HrT,0		;37
	ADDLW	D'10'		;38  
	BTFSC	HrT,1		;39
	ADDLW	-D'4'		;40
	SKIPCC			;41
	CLRF	HrU		;42 clear hours units
	SKIPCC			;43
	CLRF	HrT		;44 clear hours tens
	MOVLW	D'6'		;45         
	Delay3W			;63

; *****  489 BLACK LINES = 304 *****
	BCF	Sync		; 1		;5us Sync
	MOVLW	D'49'		; 2
	CALL	BlkLns		; 64

; insert half Ligne here on interlace

; Now 5 short equalisation pulses
; prefixed by half video Ligne on interlace

; Slight bodge of CCIR/PAL - the half Ligne 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   	; 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

Delay6	NOP
Delay5	NOP
Delay4	RETURN

; Some black Lignes
BlkLns	ADDLW	-1
	BSF	Sync		; 1		;59us black
	MOVWF	Count
	DNOP			; 1
Loop5	MOVLW	D'17'		; 1  1  1  1
	MOVWF	Delay		; 1  1  1  1
LoopD9	DECFSZ	Delay		;18 18 18 18
	GOTO	LoopD9		;32 32 32 32
	NOP			; 1  1  1  1
	DNOP			; 2  2  2  2
	BCF	Sync		; 1  1  1  1	;5us Sync
	CALL	Delay4		; 4  4  4  4
	BSF	Sync		; 1  1  1  1	;59us Black
	DECFSZ	Count		; 1  1  1  2
	GOTO	Loop5		; 2  2  2
	NOP			;          1
	MOVLW	D'17'		;          1
	Delay3W			;         51
	NOP			;          1
	RETURN			;          2


;Display
; Call immediately after BCF Sync, takes 60 Ligne periods

DisTxt	DNOP			; 5	;Ligne 1 noire
	BSF	Sync		; 6
	MOVLW	D'19'		; 7    delai=57
	Delay3W			;64
	BCF	Sync		; 1	lignes 2 et 3 noires
	MOVLW	D'2'		; 2
	CALL	BlkLns		;64
	BCF	Sync		; 1	Ligne 4 au noir , +1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 5
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 6  
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 7  
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 8 
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 9 
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 10 
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 11 
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 12 is black, + 1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 13
	CALL	Showline	;64	
	BCF	Sync		; 1	Ligne 14
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 15
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 16
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 17
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 18
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 19
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 20 is black, +1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 21
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 22
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 23
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 24
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 25
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 26
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 27
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 28 is black,+1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 29
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 30
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 31
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 32
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 33
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 34
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 35
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 36 is black, +1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 37
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 38
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 39
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 40
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 41
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 42
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 43
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 44 is black, +1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 45
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 46
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 47
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 48
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 49
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 50
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 51
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 52 is black, +1 for caracters line
	CALL	INCLIN		;64
	BCF	Sync		; 1	Ligne 53
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 54
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 55
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 56
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 57
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 58
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 59
	CALL	Showline	;64
	BCF	Sync		; 1	Ligne 60
	GOTO	Showline	;64


Showline MOVF	TNB1,W		; 4  old TNB (without plus one)
	ADDWF	CA6,W		; 5  Incline (continued), seventh caracter preparation
	BSF	Sync		; 6
	CALL 	Table		;12
	MOVWF	Ta6		;13
	MOVF	Ta0,W		;15 Carac 1
	MOVWF	PortB		;16  
	RLF	PortB		;18
	RLF	PortB		;19
	RLF	PortB		;20
	RLF	PortB		;21
	CLRF	PortB		;22
	MOVF	Ta1,W		;23 Carac 2
	MOVWF	PortB		;24
	RLF	PortB		;25
	RLF	PortB		;26
	RLF	PortB		;27
	RLF	PortB		;28
	CLRF	PortB		;29
	MOVF	Ta2,W		;30 Carac 3
	MOVWF	PortB		;31
	RLF	PortB		;32
	RLF	PortB		;33
	RLF	PortB		;34
	RLF	PortB		;35
	CLRF	PortB		;36
	MOVF	Ta3,W		;37 Carac 4
	MOVWF	PortB		;38  
	RLF	PortB		;39
	RLF	PortB		;40
	RLF	PortB		;41
	RLF	PortB		;42
	CLRF	PortB		;43
	MOVF	Ta4,W		;44 Carac 5
	MOVWF	PortB		;45
	RLF	PortB		;46
	RLF	PortB		;47
	RLF	PortB		;48
	RLF	PortB		;49
	CLRF	PortB		;50
	MOVF	Ta5,W		;51 Carac 6
	MOVWF	PortB		;50
	RLF	PortB		;51
	RLF	PortB		;52
	RLF	PortB		;53
	RLF	PortB		;54
	CLRF	PortB		;55 Put 0 ( black video between 2 caracters)
	MOVF	Ta6,W		;56 Carac 7
	MOVWF	PortB		;57  
	RLF	PortB		;58
	RLF	PortB		;59
	RLF	PortB		;60
	RLF	PortB		;61
	CLRF	PortB		;62 Ouf! no more room for any NOP
	RETURN			;64

Preptxt3  DNOP			; 5	
	BSF	Sync		; 6
	MOVF	SubSec,w	; 7
	ANDLW	B'00000001'	; 8
	SKIPNZ			; 9
	GOTO	GT4		; 10/11	
	MOVLW	D'16'		; 11
	ADDWF	Count3		; 12
	SKIPNZ			; 13
	INCF	Ptrtxt		; 14
	GOTO 	GT5		; 16
GT4	CALL	Delay4		; 15
	NOP			; 16
GT5 	MOVLW   HIGH Texte	; 17	prepare to read the text page at 3C0
	MOVWF	PClath		; 18 	
	MOVF	Ptrtxt,W	; 19	first caracter
	CALL	Texte		; 25
	MOVWF	CA0		; 26
	INCF	Ptrtxt		; 27
	MOVF	Ptrtxt,W	; 28	Second caracter
	CALL	Texte		; 34
	MOVWF	CA1		; 35
	INCF	Ptrtxt		; 36
	MOVF	Ptrtxt,W	; 37	Third caracter
	CALL	Texte		; 43
	MOVWF	CA2		; 44
	INCF	Ptrtxt		; 45	
	MOVF	Ptrtxt,W	; 46	Fourth caracter
	CALL	Texte		; 52
	MOVWF	CA3		; 53
	INCF	Ptrtxt		; 54
	MOVLW	D'2'		; 55  
	Delay3W			; 61	equ 6 cycles			
	NOP			; 62 
	RETURN			; 64

Preptxt4  DNOP			; 5	
	BSF	Sync		; 6
	MOVF	Ptrtxt,W	; 7	Fith caracter
	CALL	Texte		;13
	MOVWF	CA4		;14
	INCF	Ptrtxt		;15	
	MOVF	Ptrtxt,W	;16	Sixth caracter
	CALL	Texte		;22
	MOVWF	CA5		;23 

	INCF	Ptrtxt		;24	
	MOVF	Ptrtxt,W	;25	Seventh caracter
	CALL	Texte		;31
	MOVWF	CA6		;32       

	MOVLW	D'7'		; 33  
	Delay3W			; 54   equ 21

	MOVLW	-D'6'		; 55   plus 6 for a one caracter shift
	ADDWF	Ptrtxt		; 56   voila 
	MOVF	Ptrtxt,W	; 57   
	ADDLW	-(FTexte-DTexte); 58 compar to text length
	SKIPCC			; 59
	CLRF	Ptrtxt		; 60 RAZ text pointer if end of scroll
	CLRF 	PClath		; 61 RAZ PClath for reading lire caracters table page at page 0	
	CLRF	TNB		; 62 TNB initialisation
	RETURN			; 64	
			

INCLIN	MOVF	TNB,W		; 4  Computing the table input adress 
	MOVWF	TNB1		; 5
	BSF	Sync		; 6  and store in  Ta0 to Ta5 registers
	NOP			; 7 
	MOVF 	TNB,W		; 8	
	ADDWF	CA0,W		; 9   Add TNB to result
	CALL 	Table		; 15  Call line number NB
	MOVWF	Ta0		; 16  Table in TA0
	MOVF 	TNB,W		; 17	
	ADDWF	CA1,W		; 18
	CALL 	Table		; 24
	MOVWF	Ta1		; 25
	MOVF 	TNB,W		; 26	
	ADDWF	CA2,W		; 27
	CALL 	Table		; 33
	MOVWF	Ta2		; 34
	MOVF 	TNB,W		; 35	
	ADDWF	CA3,W		; 36
	CALL 	Table		; 42
	MOVWF	Ta3		; 43
	MOVF 	TNB,W		; 44	
	ADDWF	CA4,W		; 45
	CALL 	Table		; 51
	MOVWF	Ta4		; 52 
	MOVF 	TNB,W		; 53 
	ADDWF	CA5,W		; 54 
	CALL 	Table		; 60 
	MOVWF	Ta5		; 61 
	INCF	TNB		; 62  the (Ta6) is in the Showline routine !!
	RETURN			; 64

PREPH	DNOP			; 5	Clock 
	BSF	Sync		; 6
	BCF 	Status,C	; 7

	MOVLW	D'80'		; 8 First caracter is space (black)
	MOVWF	CA0		; 9  

	MOVF	HrT,W		; 10  Hours Tens 
	MOVWF	CA1		; 11
	RLF	CA1		; 12  multiply by 7 for table access
	RLF	CA1		; 13  
	ADDWF	CA1		; 14
	ADDWF	CA1		; 15
	ADDWF	CA1		; 16

	MOVF	HrU,W		; 17  Heures Units
	MOVWF	CA2		; 18
	RLF	CA2		; 19  multiply by 7 for table access
	RLF	CA2		; 20
	ADDWF	CA2		; 21
	ADDWF	CA2		; 22
	ADDWF	CA2		; 23

	MOVLW 	D'70'		; 24
	BTFSC	SeU,0		; 25 parity test for seconds
	ADDLW	D'5'		; 26
	MOVWF	CA3		; 27 result = 70 or 75

	MOVF	MiT,W		; 28 Minutes Tens
	MOVWF	CA4		; 29
	RLF	CA4		; 30 multiply by 7 for table access
	RLF	CA4		; 31
	ADDWF	CA4		; 32
	ADDWF	CA4		; 33
	ADDWF	CA4		; 34

	MOVF	MiU,W		; 35 Minutes Units
	MOVWF	CA5		; 36
	RLF	CA5		; 37 multiply by 7 for table access
	RLF	CA5		; 38
	ADDWF	CA5		; 39
	ADDWF	CA5		; 40
	ADDWF	CA5		; 41

	MOVLW	D'80'		; 42
	MOVWF	CA6		; 43 Last caracter is a space

	MOVLW	D'5'		; 44
	Delay3W			; 59 eq (15)
	
	DNOP			; 61
	CLRF	TNB		; 62
	RETURN			; 64

BARRE	DNOP			; 5	Grey for outputs RA1 RA2 RA3
	BSF	Sync		; 6
	MOVLW	B'10000'	; 7    Outputs Activation RA1 RA2 RA3 on portA
	TRIS	PortA		; 8  	
	MOVLW	D'1'		; 9    Only even numbers (for sync='1')
	MOVWF	PortA		; 10
	CALL 	Delay4		; 14
	CALL 	Delay4		; 18
	MOVLW	D'3'		; 
	MOVWF	PortA		;   
	CALL 	Delay4		; 24
	MOVLW	D'5'		; 
	MOVWF	PortA		;   
	CALL	Delay4		; 30
	MOVLW	D'7'		;
	MOVWF	PortA		; 
	CALL 	Delay4		; 36
	MOVLW	D'9'		;
	MOVWF	PortA		; 
	CALL	Delay4		; 42
	MOVLW	D'11'		;
	MOVWF	PortA		; 
	CALL	Delay4		; 48
	MOVLW	D'13'		;
	MOVWF	PortA		; 
	CALL	Delay4		; 54
	MOVLW	D'15'		; 55
	MOVWF	PortA		; 56
	CALL	Delay4		; 60
	MOVLW	B'11110'	; 61 Ouput in tristate (except sync) on Port A
	TRIS	PortA		; 62
	RETURN			; 64

TOUCHE
	DNOP			;5
	BSF Sync		;6
	MOVF	PortB,w		;7	reading PortB
	XORLW	B'11111111'	;8	compare with before which was '1' due to the pull-up loads
	ANDLW	B'11000000'	;9      mask for RB7 et RB6
	BTFSC	Status,Z	;10	zero set=no buttons
	GOTO	RT2		;12	out if no key press	
	INCFSZ 	Count2		;13	delay (with frame counter) if a key at 1
	GOTO 	RT1		;15
	BTFSC	PortB,7		;15	minutes button test
	INCF	MiU		;16
	BTFSC	PortB,6		;17	hours button test
	INCF	HrU		;18
	MOVLW	D'236'		;19	Wait a while
	MOVWF 	Count2		;20
	GOTO	RT3		;22		
RT2	MOVLW	D'236'		;13	
	MOVWF	Count2		;14
RT1	CALL Delay4		;18	
	CALL Delay4		;22
RT3	MOVLW	D'13'		;23
	Delay3W			;62
	return			;64

	Org	3A0

Texte	ADDWF	PCL,F
DTexte	equ	$
	RETLW	CarSP	; 1  LENGTH = 95 MAXIMUM (characters plus space)
	RETLW	CarSP	; 2
	RETLW	CarSP	; 3
	RETLW	CarSP	; 4
	RETLW	CarSP	; 5  
	RETLW	CarSP	; 6  *** do not modify the first 6 SP characters **
	RETLW	CarB	; 7
	RETLW	CarA	; 8
	RETLW	CarT	; 9
	RETLW	CarC	;10
	RETLW	CarSP	;
	RETLW	CarP	; 
	RETLW	CarI	;  
	RETLW	CarC	;
	RETLW	CarD
	RETLW	CarR
	RETLW	CarE
	RETLW	CarA
	RETLW	CarM
	RETLW	CarSP
	RETLW   CarSP
	RETLW   CarSP
	RETLW   CarSP
	RETLW	CarSP
	RETLW	CarSP
	RETLW	CarSP
	RETLW	CarSP	
FTexte	equ	$-6	; necessairy for scrolling 7 caracters on the screen
	RETLW	CarSP

	END


⌨️ 快捷键说明

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