mọi người ơi . mình đang viết code cho 8051 để giao tiếp với con DAC MCP4922 . mình có mô phỏng trên proteus nhưng con DAC không hoạt động . bác nào biết giúp mình với ...
mình có đính kèm file mô phỏng ở dưới nhé . code này mình làm trên kid . LED ma 7 đoạn có địa chỉ 0000H và con ADC có địa chỉ 4000H .
ý nghĩa bài này là dùng DAC xuất điện áp ra ngoài sau đó dùng ADC đọc điện áp và ngi vào LED 7 đoạn
mình có đính kèm file mô phỏng ở dưới nhé . code này mình làm trên kid . LED ma 7 đoạn có địa chỉ 0000H và con ADC có địa chỉ 4000H .
ý nghĩa bài này là dùng DAC xuất điện áp ra ngoài sau đó dùng ADC đọc điện áp và ngi vào LED 7 đoạn
ORG 2000H
SCK BIT P1.1
SDI BIT P1.2
nCS BIT P1.0
nLD BIT P1.3
SETB SCK
MAIN: setB NLD
CLR NCS
MOV A,#00H
MOV R4,#00H
tiep: INC R4
MOV A,R4
ACALL lay8
INC R4
MOV A,R4
ACALL lay4
SETB NCS
NOP
NOP
CLR NLD
NOP
NOP
setB NLD
ACALL DELAY
LAP: MOV A,#00H
MOV DPTR,#4000H
MOVX @DPTR,A
ACALL DELAY
MOVX A,@DPTR
ACALL BI2BCD
ORL A,#0E0H
ACALL XUATLED
MOV A,B
ORL A,#0D0H
ACALL XUATLED
MOV A,R5
ORL A,#0B0H
ACALL XUATLED
ACALL DELAY2
SJMP tiep
lay8:
mov R6,#9
mov DPTR,#TABLE
movc A,@A+DPTR
loop8: RLC A
ACALL xuat
DJNZ R6,loop8
RET
lay4:
mov R6,#9
mov DPTR,#TABLE
movc A,@A+DPTR
Loop4: RLC A
ACALL xuat
DJNZ R6,loop4
RET
xuat:
MOV SDI,C
NOP
NOP
SETB SCK
NOP
NOP
NOP
NOP
CLR SCK
NOP
NOP
RET
DELAY:
MOV R3,#2
L11: MOV R2,#2
L22: MOV R1,#250
DJNZ R1,$
DJNZ R2,L22
DJNZ R3,L11
RET
DELAY1:
MOV R3,#20
L1: MOV R2,#20
L2: MOV R1,#100
DJNZ R1,$
DJNZ R2,L2
DJNZ R3,L1
RET
DELAY2:
MOV R3,#20
L111: MOV R2,#200
L222: MOV R1,#250
DJNZ R1,$
DJNZ R2,L222
DJNZ R3,L111
RET
xuatLED:
MOV DPTR,#0000H
MOVX @DPTR,A
ACALL DELAY
RET
BI2BCD: MOV B,#10
DIV AB
MOV R5,B
MOV B,#10
DIV AB
RET
TABLE: DB 38H,39H,30H,37H,34H,35H,36H,37H,38H,39H
END
SCK BIT P1.1
SDI BIT P1.2
nCS BIT P1.0
nLD BIT P1.3
SETB SCK
MAIN: setB NLD
CLR NCS
MOV A,#00H
MOV R4,#00H
tiep: INC R4
MOV A,R4
ACALL lay8
INC R4
MOV A,R4
ACALL lay4
SETB NCS
NOP
NOP
CLR NLD
NOP
NOP
setB NLD
ACALL DELAY
LAP: MOV A,#00H
MOV DPTR,#4000H
MOVX @DPTR,A
ACALL DELAY
MOVX A,@DPTR
ACALL BI2BCD
ORL A,#0E0H
ACALL XUATLED
MOV A,B
ORL A,#0D0H
ACALL XUATLED
MOV A,R5
ORL A,#0B0H
ACALL XUATLED
ACALL DELAY2
SJMP tiep
lay8:
mov R6,#9
mov DPTR,#TABLE
movc A,@A+DPTR
loop8: RLC A
ACALL xuat
DJNZ R6,loop8
RET
lay4:
mov R6,#9
mov DPTR,#TABLE
movc A,@A+DPTR
Loop4: RLC A
ACALL xuat
DJNZ R6,loop4
RET
xuat:
MOV SDI,C
NOP
NOP
SETB SCK
NOP
NOP
NOP
NOP
CLR SCK
NOP
NOP
RET
DELAY:
MOV R3,#2
L11: MOV R2,#2
L22: MOV R1,#250
DJNZ R1,$
DJNZ R2,L22
DJNZ R3,L11
RET
DELAY1:
MOV R3,#20
L1: MOV R2,#20
L2: MOV R1,#100
DJNZ R1,$
DJNZ R2,L2
DJNZ R3,L1
RET
DELAY2:
MOV R3,#20
L111: MOV R2,#200
L222: MOV R1,#250
DJNZ R1,$
DJNZ R2,L222
DJNZ R3,L111
RET
xuatLED:
MOV DPTR,#0000H
MOVX @DPTR,A
ACALL DELAY
RET
BI2BCD: MOV B,#10
DIV AB
MOV R5,B
MOV B,#10
DIV AB
RET
TABLE: DB 38H,39H,30H,37H,34H,35H,36H,37H,38H,39H
END
Comment