Skip to content

Instantly share code, notes, and snippets.

@fenrig
Created January 31, 2012 14:57
Show Gist options
  • Save fenrig/1710914 to your computer and use it in GitHub Desktop.
Save fenrig/1710914 to your computer and use it in GitHub Desktop.
check et zelf
org 000h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;tempomzetting:
; zet de temperatuur om in graden celcius tot 1 getal na de komma
; bits worden juist gezet
; verschil gemaakt tussen max waarde en gemeten waarde
; omzetting van kelvin naar graden celcius
; output is in bcd, r2,r1,r0 =24 bit bcd getal (r2=msb)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lcall initlcd
tempomzetting:
push acc ;kopie maken van acc
push psw ;kopie maken van acc
anl a,#11000000b ;eerste twee bits opslaan
rl a ;a doordraaien
rl a ;a nog eens opschuiven, de bits staan nu vooraan in a
mov r1,a ; getal opslaan voor sub16
pop acc ;kopie word terug gehaald
pop psw ;kopie word terug gehaald
anl a,#00111111b ;de al gebruikte bits worden weg gelaten
anl b,#11000000b ;de least significant bits (b) worden opgeslagen
add a,b ;a en b worden opgeteld, de b-bits staan nog vooraan
rl a ;roteren
rl a ;roteren => b bits staan nu achteraan
; sub16 zal het verschil berekenen van 2 16 bit getallen. De uitkomst is
; 24 bit groot. (eerste - tweede)
; input: r1,r0 = eerste getal (r1=msb)
; r3,r2 = tweede getal (r3=msb)
; output: r2,r1,r0 (r2=msb)
;
; r3,r2,r1,r0 worden aangepast
mov r0,a
mov r2,#2fh
mov r3,#02h
lcall sub16
; mul16 is de routine die twee 16 bit getallen zal vermenigvuldigen.
; input: r1,r0 = eerste getal (r1=msb)
; r3,r2 = tweede getal (r3=msb)
; output: r3,r2,r1,r0 met r3=msb
mov r2,#88h
mov r3,#13h
lcall mul16
; div32 is de routine die twee 32 bit getallen zal delen (eerste/tweede).
; input: r3,r2,r1,r0 = eerste getal (r3=msb)
; r7,r6,r5,r4 = tweede getal (r7=msb)
; output: r7,r6,r5,r4 = quotient (r7=msb)
; r3,r2,r1,r0 = rest (r3=msb)
; carry=1 bij delen door 0
mov r4,#00h
mov r5,#04h
mov r6,#00h
mov r7,#00h
lcall div32
; input r1,r0 = 16 bit hex getal (r1=msb)
; output r2,r1,r0 =24 bit bcd getal (r2=msb)
mov a,r3
lcall lcdoutbyte
mov a,r2
lcall bcdhex8
lcall lcdoutbyte
mov a,r1
lcall bcdhex8
lcall lcdoutbyte
mov a,r0
lcall bcdhex8
lcall lcdoutbyte
mov a,#99h
lcall delaya0k05s
ljmp tempomzetting
#include "c:\xcez2.inc"
#include "c:\xcez1.inc"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment