Martijn Berntsen
pe4mb
ik wil een assembler programma'tje voor een At89S8252 maken maar kwam wat problemen tegen. kan iemand mij vertellen hoe ik het volgende maak in assembler:
code die ik heb:
;Serial port access (COMPORT.ASM)
;11,059MHz, 9600 Baud
#include 8051.H
.org 0000H
INIT clr TR1 ;stop timer 1
mov TH1,#0FAH ;256-6: 9600 baud
mov TL1,#0FAH
anl TMOD,#0FH ;Timer1: 8 bit auto-reload
orl TMOD,#20H
setb TR1 ;start timer
mov SCON,#50H ;InitRS232
setb TI
orl PCON,#80H ;SMOD=1
RX mov A,SBUF
clr RI
ret
TX clr TI
mov SBUF,A
ret
.ender is een register, R7, als RI 1 wordt, moet hij kijken welke waarde er in dit register staat, dit is een commando, en RI 0 maken, en dan moet hij een bepaalde opdracht uitvoeren:
10 : wacht op een waarde, deze komt in R7, als RI 1 wordt, is deze binnen dan moet hij RI 0 maken, de ontvangen waarde op 8 bits poort P1 zetten, en teruggaan naar het begin om op een nieuw commando te wachten.
11 : zelfde als bij 10, maar dan moet hij de ontvangen waarde op poort P3 zetten.
12 : Poort P1 uitlezen, deze in de accu zetten, en dan TX aanroepen. dan weer op een nieuw commando wachten.
13 : zelfde als bij 12, maar dan moet hij poort P3 uitlezen.
20 : een AD converter uitlezen, in de accu plaatsen en TX aanroepen. dan o een nieuw commando wachten.
hoe ik de waarden in P1 en P3 zet weet ik wel, hoe ik ze uit moet lezen lukt ook wel, de ADC nog niet geprobeert, maar lukt denk ik wel.
Maar hoe ik de wachtlus moet maken met de voorwaardelijke acties zou ik niet weten.
please help!
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
sven
pointers don't kill programs, programmers kill programs