; asm file for pic 16F84 running at 4MHz
; see jpg-file for connections

	list p=16F84,f=inhx8m
	__config  _XT_OSC & _WDT_OFF & _PWRTE_ON
	#include <p16F84.INC>

ch1	equ	0x10
ch2	equ	0x11
ch3	equ	0x12
ch4	equ	0x13
ch5	equ	0x14
ch6	equ	0x15
ch7	equ	0x16
ch8	equ	0x17
ch9	equ	0x18
ch10	equ	0x19
ch11	equ	0x1A
ch12	equ	0x1B
ch13	equ	0x1C
ch14	equ	0x1C
ch15	equ	0x1E
ch16	equ	0x1F
ch17	equ	0x20
ch18	equ	0x21
ch19	equ	0x22
ch20	equ	0x22
ch21	equ	0x23
ch22	equ	0x24
ch23	equ	0x25
ch24	equ	0x26	
ch25	equ	0x27
ch26	equ	0x28
ch27	equ	0x29
ch28	equ	0x2A
ch29	equ	0x2B
ch30	equ	0x2C
ch31	equ	0x2D
ch32	equ	0x2E
ch33	equ	0x2F
ch34	equ	0x30
ch35	equ	0x31
ch36	equ	0x32
ch37	equ	0x33
ch38	equ	0x34
ch39	equ	0x35
ch40	equ	0x36
ch41	equ	0x37
ch42	equ	0x38
ch43	equ	0x39
ch44	equ	0x3A
ch45	equ	0x3B
ch46	equ	0x3C
ch47	equ	0x3C
ch48	equ	0x3E
ch49	equ	0x3F
ch50	equ	0x40
ch51	equ	0x41
ch52	equ	0x42
ch53	equ	0x43
ch54	equ	0x44
ch55	equ	0x45
ch56	equ	0x46
ch57	equ	0x47	
ch58	equ	0x48
ch59	equ	0x49
ch60	equ	0x4A
ch61	equ	0x4B
ch62	equ	0x4C
ch63	equ	0x4D
ch64	equ	0x4E
ch65	equ	0x4F   ;dummy channel, don't remove

      
	org	0x00
	goto	start
	org	0x05
start	bsf	STATUS,RP0
	movlw	0xFF		; port b input
	movwf	TRISB
	movlw	0xFE		; portA,0 output, other bits input
	movwf	TRISA
	movlw	b'11011000'
	movwf	OPTION_REG
	movlw	b'00100000'	; no interupt allowed
	movwf	INTCON
	bcf	STATUS,RP0
begin	movlw	0x00
	movwf	ch1
	movwf	ch2
	movwf	ch3
	movwf	ch4
	movwf	ch5
	movwf	ch6
	movwf	ch7
	movwf	ch8	
	movwf	ch9
	movwf	ch10
	movwf	ch11
	movwf	ch12
	movwf	ch13
	movwf	ch14
	movwf	ch15
	movwf	ch16
	movwf	ch17
	movwf	ch18
	movwf	ch19
	movwf	ch20	
	movwf	ch21
	movwf	ch22
	movwf	ch23
	movwf	ch24
	movwf	ch25
	movwf	ch26
	movwf	ch27
	movwf	ch28
	movwf	ch29
	movwf	ch30
	movwf	ch31
	movwf	ch32
	movwf	ch33	
	movwf	ch34
	movwf	ch35
	movwf	ch36
	movwf	ch37
	movwf	ch38
	movwf	ch39
	movwf	ch40
	movwf	ch41	
	movwf	ch42
	movwf	ch43
	movwf	ch44
	movwf	ch45
	movwf	ch46
	movwf	ch47
	movwf	ch48
	movwf	ch49
	movwf	ch50
	movwf	ch51
	movwf	ch52
	movwf	ch53	
	movwf	ch54
	movwf	ch55
	movwf	ch56
	movwf	ch57
	movwf	ch58
	movwf	ch59
	movwf	ch60
	movwf	ch61
	movwf	ch62
	movwf	ch63
	movwf	ch64
	movwf	ch65
go	btfss	PORTA,1	
	goto 	dmxout
	movlw	0x10
	movwf	FSR
	bcf	STATUS,2
	program	btfsc	PORTA,3	
wacht	btfss	PORTA,3	
	goto	wacht	
	movf	PORTB,W
	movwf	INDF
	incf	FSR
	movf	FSR,w
	xorlw	0x50
	btfsc	STATUS,2
	goto    dmxout
pause	btfsc	PORTA,3	;
	goto	pause	;
	goto	program
dmxout	bsf	PORTA,0
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	bcf	PORTA,0
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop	
	bsf	PORTA,0
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	bcf	PORTA,0 ;startbit
	nop
	nop
	nop
	nop	;begin startcode
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop	
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop	
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop	
	nop
	nop
	nop
	nop
	nop
	nop
	nop	;end of startcode
	bsf	PORTA,0 ;stopbits
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	movlw	0x10
	movwf	FSR
chanel	movf	INDF,w	
	bcf	PORTA,0	;startbit
	nop
	nop
	nop
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	nop	
	movwf	PORTA
	rrf	INDF
	movf	INDF,W
	rrf	INDF	
	bsf	PORTA,0	;three stopbits
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	bsf	PORTA,0
	nop
	nop
	nop
	bcf	STATUS,2
	nop
	nop
	nop
	clrwdt
	incf	FSR	
	movf	FSR,w
	xorlw	0x50
	btfss	STATUS,2
	goto	chanel
	goto	go

	end
		
	
