1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
dat bit p3.2 ;定义端口号
clk bit p3.3
cs bit p3.4
org 8000h ;程序定位及跳转指令的设置
ljmp 8100h
org 8100h
start:
mov sp, #60h ;定义堆栈底位置
stable:
mov r3, #00h ;循环体执行次数:256
mov r6, #00h ;寄存器清零
mov r7, #00h ;寄存器清零
loop:
;取平均值主要是为了减小
;高速模数转换干扰产生的误差
lcall tlc549_adc ;调用模数转换子程序
add a, r6 ;向R7-R6累加a的值256次
mov r6, a
mov a, #00h
addc a, r7
mov r7, a
lcall delay
djnz r3, loop
mov a, r7 ;将R7中的平均值送到a
cpl a ;a取反
mov p1, a ;输出a的值
sjmp stable
tlc549_adc: ;模数转换的驱动子程序
push 07h
clr a ;清零
clr clk ;清零
mov r7, #08h ;由于是串行输入,每字节需要8次读入
clr cs ;片选信号置低位,选中模数转换器
loop1:
setb clk ;开始读取数据
mov c, dat
rlc a ;诸位读取,送到a
clr clk
djnz r7, loop1
setb cs
setb clk
pop 07h
ret
delay: ;微小的延时,用来同步和协调单片机
;与模数转换器的工作步调
push 00h
mov r0, #00h
djnz r0, $
pop 00h
ret
end |
Be the first to comment on this entry.