Created
January 31, 2012 00:34
-
-
Save fenrig/1707837 to your computer and use it in GitHub Desktop.
dries.asm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
org 000h | |
mov sp,#7Fh | |
ljmp Init | |
org 00Bh | |
push psw | |
cjne r6,#11111111b,nietvol ;als r6 = 255 r7 verhogen en r6 verhogen (255 + 1 --> 0) | |
inc r7 | |
nietvol: | |
inc r6 | |
cjne r6,#00110000b,einde | |
cjne r7,#01110101b,einde ;Controleren dat interrrupt 30 000 x is uitgevoerd | |
mov r6,#00h ;Reset tellers voor 30 000 x | |
mov r7,#00h | |
inc r5 ;register voor looplicht | |
push acc | |
mov a,#FFh ;Xor r5 met #FFh omdat ledjes branden bij 0 | |
xrl a,r5 | |
mov p3_data,a ;pas looplicht aan | |
pop acc | |
einde: | |
pop psw | |
reti | |
Init: | |
;Initialisaties: | |
lcall initlcd | |
lcall initleds | |
lcall initsio | |
;BERICHT SERIEELE COMMUNICATIE | |
;----------- | |
mov dptr,#Initialisatie | |
lcall siooutmsga | |
;TIMER | |
;----------- | |
mov th0,#37h | |
mov tl0,#37h | |
mov tmod,#02h ;Timer0 in 8bit reload daarmee dezelfde waardes in th0 en tl0 | |
setb et0 ;Timer0 in interrupt modus | |
setb ea ;Algemene interrupts | |
setb tr0 ;Timer 0 starten | |
mov a,#13h | |
lcall delaya0k05s | |
Main: | |
mov dptr,#Prompt | |
lcall siooutmsga ;Prompt bericht sturen | |
lcall sioinbufa ;Buffer opbouwen (vanaf #54h) | |
;Conversie | |
; Stap1 | |
mov r0,#54h ;hoogste getal uit buffer halen | |
lcall ascii1 ;MSB converteren | |
jc fout ;Als Carrier gezet is is er waarschijnlijk een fout gebeurd | |
mov r0,a ;Klaarmaken voor mul16 | |
mov r2,#00010000b ;Vullen met 10 000 | |
mov r3,#00100111b | |
mov r1,#00h ;R1 vullen met 0 | |
lcall mul16 | |
mov a,r1 | |
push acc ;R1 en R2 eventjes bewaren | |
mov a,r0 | |
push acc | |
; Stap2 | |
mov r0,#55h ;rest van het getal uit buffer halen | |
lcall ascii4 | |
jc fout ;Als Carrier gezet is is er waarschijnlijk een fout gebeurd | |
mov r0,dpl | |
mov r1,dph | |
pop acc | |
mov r3,a | |
pop acc | |
mov r2,a | |
lcall add16 ;Gehele getal optellen en dus opbouwen | |
;Vergelijking | |
; Stap1: getal = 00h | |
cjne r0,#00h,vergelijking2 | |
cjne r1,#00h,vergelijking2 | |
mov a,#80h | |
ljmp print | |
vergelijking2: | |
; Stap 2: getal > 0000h en getal < 8000h | |
; getal = 8000h? | |
cjne r1,#80h,vergelijking22 | |
mov a,#94h ;lijn 3 | |
ljmp print | |
vergelijking22: | |
jnc vergelijking3 ;getal Groter dan 8000h? | |
mov a,#c0h ;kleiner dan 8000h & lijn 2 | |
ljmp print | |
vergelijking3: | |
cjne r0,#FFh,vergelijking4 ;getal gelijk aan FFFFh? | |
cjne r1,#FFh,vergelijking4 | |
mov a,#D4h ;lijn 4 | |
ljmp print | |
vergelijking4: ;getal is tussen 8000h en FFFFh | |
mov a,#94h ;lijn 3 | |
ljmp print | |
print: ;a bevat plaats van de cursor en deze functie print dan het getal uit | |
lcall lcdoutchar | |
lcall bcdhex16 | |
mov a,r1 | |
lcall lcdoutbyte | |
mov a,r0 | |
lcall lcdoutbyte | |
ljmp Main | |
fout: | |
mov dptr,#ErrorNumber | |
lcall siooutmsga | |
mov a,#26h | |
lcall delaya0k05s | |
ljmp Main | |
Initialisatie: db "Seriële Connectie is geinitialiseerd! ",000h | |
Prompt: db 0Dh,"[root@xc8888-µc ~] ",000h | |
ErrorNumber: db 0Dh,"U heeft een foutieve waarde ingegeven:",000h | |
#include "c:\xcez1.inc" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment