#Microcontrollers DAC interfacing with 8051

;This is a program to generate square wave using dac

temp equ 2 ;use Register R3
rev  equ 3 ;use Register R2
cntr equ 4 ;use Register R4

org 0h
jmp begin
delay:
mov r5,#0FFh
d1:
djnz r5,d1
ret

send_dac:
mov P1,a
ret

begin:
nop
w1:
mov a, #00h
lcall send_dac
lcall delay
mov a, #0FFh
lcall send_dac
lcall delay
jmp w1
end



; ;This is a program to generate triangular wave using dac

temp equ 1 ;use Register R3 
rev  equ 2 ;use Register R2 
cntr equ 3 ;use Register R4 

org 0h
jmp begin
delay:
mov r5,#02h
d1:
djnz r5,d1
ret
send_dac:
mov P1,a
ret
begin:
mov r0,#00h
w1:
mov a,r0
lcall send_dac
lcall delay
inc r0
cjne r0,#0ffh,w1
w2:
mov a,r0 
lcall send_dac
lcall delay
djnz r0, w2
jmp w1
end


; ;This is a program to generate sine wave using dac

temp equ 1 ;use Register R3 
rev  equ 2 ;use Register R2 
cntr equ 3 ;use Register R4 

org 0h
jmp begin
delay:
mov r5,#01h
d1:
djnz r5,d1
ret

send_dac:
mov P1,a
ret

begin:
mov dptr,#lut
mov r0,#00h
Q1: //quadrant I
mov a,r0
movc a,@a+dptr
add a,#07Fh
lcall send_dac
;lcall delay
mov a ,r0
add a,#01h
mov r0,a
cjne r0,#12h,Q1

Q2: //quadrant II
mov a,r0
movc a,@a+dptr
add a,#07Fh
lcall send_dac
;lcall delay
mov a ,r0
subb a,#01h
mov r0,a
djnz r0,Q2

Q3: //quadrant III   
mov a,r0
movc a,@a+dptr
    cpl a
subb a,#01h
add a,#07Fh
lcall send_dac
;lcall delay
mov a ,r0
add a,#01h
mov r0,a
cjne r0,#12h,Q3

Q4://quadrant II
mov a,r0
movc a,@a+dptr
cpl a
add a,#01h
subb a,#07Fh
lcall send_dac
;lcall delay
mov a,r0
subb a,#01h
mov r0,a
djnz r0,Q4

jmp Q1

org 100h
lut: DB 0,10,17,25,35,42,50,57,65,71,77,82,87,91,95,97,99,100,100
end


; ;This is a program to generate trapezoidal wave using dac

temp equ 1 ;use Register R3 
rev  equ 2 ;use Register R2 
cntr equ 3 ;use Register R4 

org 0h
jmp begin

delay:
mov r5,#02h
d1:
djnz r5,d1
ret

longdelay:
mov r5,#0AFh
ld1:
mov r6,#08h
ld2:
djnz r6,ld2
djnz r5,ld1
ret

send_dac:
mov P1,a
ret

begin:
mov r0,#00h
w1:
mov a,r0
lcall send_dac
;lcall delay
inc r0
cjne r0,#0ffh,w1

lcall longdelay

w2:
mov a,r0 
lcall send_dac
;lcall delay
djnz r0,w2
lcall longdelay
jmp w1
end


Comments