单片机汇编语言基于AT89C52和DAC0808按键控制和电压输出显示的多档数字调压器设计 举例Keil4汇编语言程序
时间: 2024-05-12 10:13:48 浏览: 14
以下是基于AT89C52和DAC0808按键控制和电压输出显示的多档数字调压器设计的Keil4汇编语言程序:
```
; AT89C52和DAC0808按键控制和电压输出显示的多档数字调压器设计
; 作者:XXX
; 定义端口
P0 equ 0x80
P1 equ 0x90
P2 equ 0xA0
P3 equ 0xB0
; 定义按键端口
keyPort equ P1
; 定义DAC0808端口
dacPort equ P2
; 定义LED显示端口
ledPort equ P0
; 定义常量
delayTime equ 500 ; 延时时间
maxValue equ 255 ; DAC0808最大值
; 定义变量
data1 db ? ; 存放按键值
data2 db ? ; 存放DAC0808输出值
data3 db ? ; 存放LED显示值
; 主程序
main:
; 初始化
mov keyPort, #0xFF ; 设置按键端口为输入
mov dacPort, #0x00 ; 设置DAC0808端口为输出
mov ledPort, #0x00 ; 设置LED显示端口为输出
mov data1, #0x00 ; 初始化按键值为0
mov data2, #0x00 ; 初始化DAC0808输出值为0
mov data3, #0x00 ; 初始化LED显示值为0
loop:
; 读取按键值
mov a, keyPort ; 读取按键端口
anl a, #0x0F ; 屏蔽高四位
mov data1, a ; 存储按键值
; 根据按键值改变DAC0808输出值
cjne data1, #0x01, skip1 ; 如果按键值不等于1,则跳过
mov data2, #0x00 ; 将DAC0808输出值设置为0
sjmp next ; 跳转到下一步
skip1: cjne data1, #0x02, skip2 ; 如果按键值不等于2,则跳过
mov data2, #0x20 ; 将DAC0808输出值设置为1/8
sjmp next ; 跳转到下一步
skip2: cjne data1, #0x03, skip3 ; 如果按键值不等于3,则跳过
mov data2, #0x40 ; 将DAC0808输出值设置为2/8
sjmp next ; 跳转到下一步
skip3: cjne data1, #0x04, skip4 ; 如果按键值不等于4,则跳过
mov data2, #0x60 ; 将DAC0808输出值设置为3/8
sjmp next ; 跳转到下一步
skip4: cjne data1, #0x05, skip5 ; 如果按键值不等于5,则跳过
mov data2, #0x80 ; 将DAC0808输出值设置为4/8
sjmp next ; 跳转到下一步
skip5: cjne data1, #0x06, skip6 ; 如果按键值不等于6,则跳过
mov data2, #0xA0 ; 将DAC0808输出值设置为5/8
sjmp next ; 跳转到下一步
skip6: cjne data1, #0x07, skip7 ; 如果按键值不等于7,则跳过
mov data2, #0xC0 ; 将DAC0808输出值设置为6/8
sjmp next ; 跳转到下一步
skip7: cjne data1, #0x08, skip8 ; 如果按键值不等于8,则跳过
mov data2, #0xE0 ; 将DAC0808输出值设置为7/8
sjmp next ; 跳转到下一步
skip8: ; 如果按键值不等于1~8,则保持原来的DAC0808输出值
next:
; 输出DAC0808输出值
mov a, dacPort ; 读取DAC0808端口
anl a, #0x80 ; 屏蔽高位
orl a, data2 ; 将DAC0808输出值存储到低7位
mov dacPort, a ; 输出DAC0808输出值
; 显示DAC0808输出值
mov a, data2 ; 读取DAC0808输出值
mov data3, a ; 存储LED显示值
; 输出LED显示值
mov ledPort, data3 ; 输出LED显示值
; 延时
mov r0, #delayTime ; 设置延时时间
delay:
djnz r0, delay ; 延时
; 循环
sjmp loop
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)