jetzt läuft das sendeprogramm vom rc5-code super.
ist ziemlich kurz und ist mit asm-code gemischt :
Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 $crystal = 8000000 Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Declare Sub Rc5out() Dim Adre As Byte Dim Command As Byte Dim Togglebit As Byte Dim Z As Byte Enable Interrupts Compare1a = 111 Do For Z = 1 To 5 Adre = 20 + Z Togglebit = 0 Command = 50 + Z Call Rc5out() Waitms 500 Next Loop End Sub Rc5out() !Call Bit_lo ' 2x hi !Call Bit_hi !Call Bit_hi ' toglebit lds r17,{togglebit} sbrs r17,0 !call bit_lo sbrc r17,0 !call bit_hi ' 5x adresse ldi r18,5 Wgloop1: lds r17,{adre} sbrs r17,4 !call bit_lo sbrc r17,4 !call bit_hi lsl r17 sts {adre},r17 dec r18 brne wgloop1 ' 6x command ldi r18,6 Wgloop2: lds r17,{command} sbrs r17,5 !call bit_lo sbrc r17,5 !call bit_hi lsl r17 sts {command},r17 dec r18 brne wgloop2 !Call Ende_rc5 Bit_hi: Config Timer1 = Timer , Prescale = 1 , Compare A = Clear , Clear Timer = 1 Waitus 889 Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Waitus 889 ret Bit_lo: Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Waitus 889 Config Timer1 = Timer , Prescale = 1 , Compare A = Clear , Clear Timer = 1 Waitus 889 ret Ende_rc5: Config Timer1 = Timer , Prescale = 1 , Compare A = Clear , Clear Timer = 1 Waitms 50 End Sub
Lesezeichen