51单片机汇编学习例程(10)——DAC0832篇
ASM10_DAC0832: DAC0832输出各种波形
(注意代码显示不全,最下面有Keil源码和Proteus工程)
/**
******************************************************************************
* @file Timer.asm
* @author Alex——小白
* @version V1.0
* @date 2019.9.1
* @brief DAC0832输出各种波形
* @store 有家Proteus仿真店子
* @Link https://shop484534014.taobao.com/
* @Email 844545015@qq.com
******************************************************************************
* @attention All Rights Reserved
**/
Count EQU 31H ;定义定时器自加变量
ORG 0000H ;程序执行的起始地址 LJMP Main ;跳转到main函数ORG 000BH ;外部中断0起始地址LJMP Timer0 ;声明Timer0是外部中断0函数名称ORG 0100H ;程序跳转到0100H开始执行Main: MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0H ;3CB0H,65536-15536=50000us=50msSETB ET0 ;time0CLR TR0 ;默认不打开定时器,等方波按钮触发后打开SETB EA ;总中断打开MOV Count,#00HWhile: JNB P1.0,P10 ;如果按键P1.0=0,则跳转到P10,一下类似JNB P1.1,P11 ;按键切换波形JNB P1.2,P12JNB P1.3,P13SJMP While ;While循环
Timer0:MOV TH0,#3CH ;定时器赋值MOV TL0,#0B0HMOV A,CountCPL A ;翻转A,即让变量count翻转构成高低电平,也就是方波MOV Count,ARETI
P10: MOV R7,#00H ;根据不同按键跳转到不同的波形生成函数LCALL SQU ;调用方波函数LJMP WhileP11: MOV R7,#01HCLR TR0 ;关闭定时器LCALL SAW ;调用锯齿波LJMP WhileP12: MOV R7,#02HCLR TR0 ;关闭定时器LCALL TRI ;调用三角波LJMP WhileP13: MOV R7,#03HCLR TR0 ;关闭定时器LCALL SIN ;调用正弦波LJMP While
SQU: JNB P1.1,N1 ;方波,并在此判断按键是否切换,不切换执行方波JNB P1.2,N2JNB P1.3,N3LJMP SSQUN2: MOV R7,#02HLJMP TC0N3: MOV R7,#03HLJMP TC0SSQU: CJNE R7,#00H,TC0 ;比较R7内的值是否为0,不是则跳转TC0SETB TR0 ;方波定时器使能MOV P0,Count ;给P0=Count,由定时器反转CountLJMP SQUTC0: RET
SAW: JNB P1.0,N4 ;锯齿波,同理继续判断是否有其他按键切换JNB P1.2,N5JNB P1.3,N6LJMP SSAWN4: MOV R7,#00H LJMP TC1N5: MOV R7,#02HLJMP TC1N6: MOV R7,#03HLJMP TC1SSAW: CJNE R7,#01H,TC1 MOV R0,#00HK10: MOV P0,R0 ;将寄存器R0中数值变换0-255给P0输出,R3延时MOV R3,#00HL10: INC R3CJNE R3,#255,L10CJNE R0,#255,K10 ;如果R0!=255,则跳转K10,如果等于继续执行LJMP SAWTC1: RET
TRI: N7: MOV R7,#00HLJMP TC2N8: MOV R7,#01HLJMP TC2N9: MOV R7,#03HLJMP TC2 TTRI: CJNE R7,#02H,TC2 ;R0的数值先从0-255,然后在从255-0,R3用于延时MOV R0,#00HK20: MOV P0,R0MOV R3,#00HL20: INC R3CJNE R3,#255,L20INC R0 ;R0的数值先从0-255,R3用于延时CJNE R0,#255,K20K21: MOV P0,R0 ;R0赋值给P0MOV R3,#0FFHL21: DEC R3CJNE R3,#0,L21DEC R0 ;R0的数值先从255-0,R3用于延时 CJNE R0,#0,K21LJMP TRITC2: RET
SIN: N11: MOV R7,#01HLJMP TC3N12: MOV R7,#02HLJMP TC3SSIN: CJNE R7,#03H,TC3 MOV R0,#00HL30: INC R3CJNE R3,#255,L30CJNE R0,#255,K30LJMP SINTC3: RET
TAB: DB 80H,82H,84H,86H,88H,8AH,8CH,8EH,90H,92H,94H,96H,98H,9AH,9CH,9EHDB 0A0H,0A2H,0A4H,0A6H,0A8H,0AAH,0ABH,0ADH,0AFH,0B1H,0B2H,0B4H,0B6H,0B7H,0B9H,0BAHDB 0BCH,0BDH,0BFH,0C0H,0C1H,0C3H,0C4H,0C5H,0C6H,0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEHDB 0CEH,0CFH,0D0H,0D1H,0D1H,0D2H,0D2H,0D3H,0D3H,0D4H,0D4H,0D4H,0D4H,0D5H,0D5H,0D5HDB 0D5H,0D5H,0D5H,0D5H,0D4H,0D4H,0D4H,0D4H,0D3H,0D3H,0D2H,0D2H,0D1H,0D1H,0D0H,0CFHDB 0CEH,0CEH,0CDH,0CCH,0CBH,0CAH,0C9H,0C8H,0C6H,0C5H,0C4H,0C3H,0C1H,0C0H,0BFH,0BDHDB 0BCH,0BAH,0B9H,0B7H,0B6H,0B4H,0B2H,0B1H,0AFH,0ADH,0ABH,0AAH,0A8H,0A6H,0A4H,0A2HDB 0A0H,9EH,9CH,9AH,98H,96H,94H,92H,90H,8EH,8CH,8AH,88H,86H,84H,82HDB 80H,7DH,7BH,79H,77H,75H,73H,71H,6FH,6DH,6BH,69H,67H,65H,63H,61HDB 5FH,5DH,5BH,59H,57H,55H,54H,52H,50H,4EH,4DH,4BH,49H,48H,46H,45HDB 43H,42H,40H,3FH,3EH,3CH,3BH,3AH,39H,37H,36H,35H,34H,33H,32H,31HDB 31H,30H,2FH,2EH,2EH,2DH,2DH,2CH,2CH,2BH,2BH,2BH,2BH,2AH,2AH,2AHDB 2AH,2AH,2AH,2AH,2BH,2BH,2BH,2BH,2CH,2CH,2DH,2DH,2EH,2EH,2FH,30HDB 31H,31H,32H,33H,34H,35H,36H,37H,39H,3AH,3BH,3CH,3EH,3FH,40H,42HDB 43H,45H,46H,48H,49H,4BH,4DH,4EH,50H,52H,54H,55H,57H,59H,5BH,5DHDB 5FH,61H,63H,65H,67H,69H,6BH,6DH,6FH,71H,73H,75H,77H,79H,7BH,7DHEND
如需下载Proteus仿真文件和Keil工程,请关注公众号:
Proteus仿真店子
(若需Proteus和keil安装包,后台回复:安装包;若需Proteus教学视频,后台回复:Proteus视频;若需其它设计,后台回复:51汇编设计)
51单片机汇编学习例程(10)——DAC0832篇相关推荐
- 51单片机汇编学习例程(9)——ADC0809篇
ASM9_ADC0808: ADC0808采集ADC参数,数码管显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /** ************************** ...
- 51单片机汇编学习例程(7)——74HC595数码管篇
7.ASM7_Seg_595: 74HC595控制数码管静态显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /** **************************** ...
- 51单片机汇编学习例程(16)——AT24C02篇
ASM16_AT24C02:EEPROM数据读写,LED显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /*********************************** ...
- 51单片机汇编学习例程(17)——KeyPad4X4篇
ASM17_KeyPad4X4:矩阵键盘,LCD1602显示按键值. (注意代码显示不全,最下面有Keil源码和Proteus工程) 仿真视频 /** *********************** ...
- 51单片机汇编学习例程(13)——DC-Motor篇
ASM13_DCMotor: DC-Motor电机控制 (注意代码显示不全,最下面有Keil源码和Proteus工程) /********************************** ...
- 51单片机汇编学习(一)点亮你的LED灯
本帖为使用汇编编写51单片机的学习笔记,本帖使用软件为keil5,因为没有实际硬件,所以选择porteus仿真软件,因为是第一篇,所以内容多有赘述,详细说明了工程建立等,因为文章太长所以编程和仿真分开 ...
- 51单片机汇编学习10——串口通讯
这一小节写一下串口通讯. 建议先去了解一下什么串行通讯. 推荐一个视频3分钟理解通信协议之串口UART到底是个啥?_哔哩哔哩_bilibili 因为串口通讯涉及的寄存器相对较多.所以尽量要自己去看看S ...
- 51单片机汇编学习笔记9——定时计数器
这一小节介绍一下51单片机的一个重要外设定时计数器. 顾名思义定时计数器主要是两种功能:定时.计数. 定时:就是当你开启定时器后到了设定的时间他会触发中断,然后去执行中断服务函数里面的程序. 计数:主 ...
- 51单片机汇编学习11——扩展原理与接口技术
终于到这一小节了.这一节讲扩展原理与接口技术. 那么什么是扩展原理&接口技术呢?其实主要是3种. 1.扩展一个程序存储器 2.扩展一个数据存储器 3.扩展IO口 1.扩展程序存储器 其实这个扩 ...
最新文章
- Angular CLI在线安装和离线安装
- golang reflect 反射 简介
- 第七天2017/04/14(C++对C的扩充,C++与C的区别,C++的基础知识)
- STM32L1X系列GPIO运用
- java方法6_6. java 方法
- HTTP一次完整的http请求所经历的步骤
- spring事物管理(配置文件方式)
- Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果
- Tomcat软连接访问配置(symbol link)
- Chrome网页性能分析工具
- 使用Atlas进行元数据管理之Glossary
- 计算机机房空调设计规范,计算机机房空调设计规范
- linux能解锁小米手机吗,【BL锁】还在为小米手机如何解锁及解锁后如何加锁而烦恼吗?...
- Python爬虫:使用Appium在移动端抓取微博数据
- 大数据对于企业的价值,主要体现在哪几个方面?
- ssh连接openwrt_如何将SSH无密码连接到OpenWrt路由器?
- PS学习笔记(88天和我一起学会PS)(5/88)
- 【新闻推荐系统】(task3)自动化构建用户及物料画像
- python输出古诗词_python爬虫——爬取古诗名句
- 最新彩虹易支付全解版疑似hack易支付整站源码打包