All pastes #466988 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-02 07:20 UTC
rendered paste body
include "s:\qbasic\80c535.mcu"



; 89C2051 mit 12MHz



; EIB-Testprogramm, lässt Gruppenadresse 1/4/7 blinken



; P3.4 Input EIB-Daten

; P3.5 Output EIB-Daten

; P1.0 Aus Taster

; P1.1 Ein Taster



org 0000h		

			clr p3.5

			setb p3.4

			

START:		mov a,#0

			acall TELEGRAMM

			cpl p1.0

			mov r0,#255

			mov r1,#255

			mov r2,#20

			djnz r2,-2

			djnz r1,-6

			djnz r0,-10

			mov a,#1

			acall TELEGRAMM

			cpl p1.0

			mov r0,#255

			mov r1,#255

			mov r2,#20

			djnz r2,-2

			djnz r1,-6

			djnz r0,-10

			ajmp START





TELEGRAMM:		mov r7,a

			mov a,#BCh			; Kontrollbyte

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#11h			; feste Senderadresse 1.1.67 (spielt aber keine Rolle)

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#1Dh

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#0Ch			; feste Ziel-Gruppenadresse (hier 1.4.7)

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#07h

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#E1h			; Routen und Datenlänge 2 Byte

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#00h			; erstes Datenbyte 00h

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,r7

			add a,#80h			; zweites Datenbyte 80h für aus, 81h für an

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			mov a,#25h			; Checksum (z.Zt.noch hart verdratet)

			clr c

			subb a,r7

			acall EIB_SENDBYTE

			acall EIB_WAIT308

			ret





EIB_SENDBYTE:	acall EIB_BIT0		;41 Startbit

			mov r0,#28			;42

			djnz r0,-2			;98

			mov r1,#8			;99

			clr 00h			;100

			nop				;101

EIB_NEXTBIT:	rrc a				;102

			jc EIB_BIT1			;104=0

			acall EIB_BIT0		;41

			ajmp EIB_SENDBYTE1	;43

EIB_BIT1:		mov r0,#48			;	1

			djnz r0,-2			;	97	

			ajmp EIB_SENDBYTE2	;	99

EIB_SENDBYTE1:	mov r0,#28			;44

			djnz r0,-2			;98

			cpl 00h			;99

EIB_SENDBYTE2:	djnz r1,EIB_NEXTBIT	;101

			mov c,00h			;102	Parity Bit

			jc EIB_BIT1A		;104=0

			acall EIB_BIT0		;41

			ajmp EIB_SENDBYTE3	;43

EIB_BIT1A:		mov r0,#49			;	1

			djnz r0,-2			;	99

			ajmp EIB_SENDBYTE4	;	101

EIB_SENDBYTE3:	mov r0,#29			;44

			djnz r0,-2			;100

			nop				;101

EIB_SENDBYTE4:	ret				;103

			







EIB_BIT0:		setb p3.5		;3 total 39us ohne den call

			mov r0,#17		;4

			djnz r0,-2		;38

			clr p3.5		;39

			ret			;41



		

EIB_WAIT308:	mov r0,#151		;308us incl. call und ret

			djnz r0,-2

			nop

			ret

			

			END