omdat ik het in m'n vorige topic in picbasic deed en nu in mikrobasic, hier ff een nieuw topic om verwarring te voorkomen.

ik heb nu de volgende code:



program interrupt_v2
   dim pcwaarde as char[20]
   dim teller as byte


 '  TMR0 = 255 - 60
   
sub procedure interrupt
teller = teller + 1              'teller steeds 1tje ophogen

 if teller < pcwaarde then 'zolang de teller kleiner is dan de pcwaarde
portb.4 = 1                 'doe de led aan
end if                        'anders...
if teller >= pcwaarde then
portb.4 = 0                 'doe de led uit
end if


 INTCON = $A0                'interrupt flag weer klaarzetten voor de volgende keer
end sub

main:
TRISB = %11101111 '0 is output, 1 is input
   option_reg = %00001000
   INTCON = %10100000

   ''''''''''''Rs232''''''''''''''''''''''''
   'Read text until the sequence "ok" is received, and send back what's been received:


 pcwaarde = "0"
 Usart_Init(9600)
while TRUE

 if Usart_Data_Ready() = 1
 then   Usart_Read_Text(pcwaarde, "ok")


    Usart_Write_Text(pcwaarde)
   Delay_ms(1000)  ' 1 seconde pause
  end if
wend

   ''''''''''''''''''''''''''''''''''
 end. 

ik kan nu via rs232 een waarde opgeven, en krijg die dan ook netjes terug in de terminal, de led werkt ook met pwm.

probleem: ik kan allerlei waardes sturen, maar de led blijft op 1 bepaalde stand dimmen, ipv feller of zwakker te gaan branden.

als ik goed kijk zie de led heel snel knipperen, dus interrupt is goed?

Danny

en waar converteer je de pcwaarde tekststring naar een getal ?

ene getal vergelijken met een string komt niet goed.

dim pctext as char[20]
dim pcwaarde as byte

....

Usart_Read_Text(pctext, "ok")
pcwaarde= val(pctext)

enzovoort..

Er zit (nog) geen library voor het omzetten van een string naar een getal in mikrobasic, hier staat er een voorbeeldje om een string naar een integer om te zetten.
Moet het maar naar byte zijn, kan je het heel simpel zelf schrijven (ik doe geen controle's of alles geldig is, dat kan je zelf eventueel toevoegen):

'ASCII-48 = cijfertje
getal = (tekst[2]-48)+((tekst[1]-48)*10)+((tekst[0]-48)*100)
end sub

Je moet dus de 3 karakters waarin je getal zit selecteren, zie daarvoor de help over de string library.

dim i,j
i=0
j=0
while getal >47 and getal <58
i=i+1
j = j * 10
j = j+getal-48
wend

voila deze kan ene string omzetten naar getal het eerste niet cijfer stopt de conversie . et wel dit ding kan geen weg met comma getallen.

inderdaad mikrobasi heeft gene code om de conversie te doen. nogal stom ... das een van de basis dingen

bedankt! het werkt nu!

het stukje van videomodulator heb ik met een paar kleine aanpassingen in m'n programma gezet. en ik heb TMR0 = 255 - 60 ingesteld

op naar het (visualbasic?) programma!