Skip to content

Instantly share code, notes, and snippets.

@fenrig
Created January 31, 2012 00:34
Show Gist options
  • Save fenrig/1707837 to your computer and use it in GitHub Desktop.
Save fenrig/1707837 to your computer and use it in GitHub Desktop.
dries.asm
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