; Main.asm file generated by New Project wizard

; Created:   周五 5月 24 2019

; Processor: AT89C52

; Compiler:  ASEM-51 (Proteus)

;=====================================

$NOMOD51

$INCLUDE (80C52.MCU)

;======================================

; DEFINITIONS

; VARIABLES

; RESET and INTERRUPT VECTORS

;======================================

; Reset Vector

org   0000h

jmp   Start

;=======================================

; CODE SEGMENT

;=======================================

org   0100h

Start:

;***R4=0锯齿波R4=1三角波R4=2正弦波R4=3方波R4=梯形波***

;***********************

;       锯齿波

;***********************

MOV        R4,#0

J0:    MOV        A,#0

J0next:          CJNE                R4,#0,S1    ;判断R4,不等0跳转产生三角波

MOV                P2,A                 ;P2赋值

LCALL                delay                 ;延时

INC                A                     ;增加A的值,产生锯齿波上升沿

JB                P1.0,J0p11         ;扫描检测按键给R4赋值选择输出信号波形

MOV                R4,#0                 ;产生锯齿波信号

J0p11:          JB                P1.1,J0p12

MOV                R4,#1             ;产生三角波信号

J0p12:    JB                P1.2,J0p13

MOV                R4,#2                  ;产生正弦波信号

J0p13:          JB                P1.3,J0p14

MOV                  R4,#3                  ;产生方波信号

J0p14:          JB                   P1.4,J0p15

MOV                R4,#4                  ;产生梯形波信号

J0p15:         SJMP            J0next

;***************************

;          三角波

;***************************

S1:       MOV                A,#0

S1n1:          CJNE                R4,#1,Z3                ;判断R4,不等于1则跳转正弦波发生

MOV                P2,A                    ;产生三角波的上升沿

LCALL                 delay                    ;调用延时

INC                A                    ;增加A

JB                P1.0,S11p11            ;扫描检测按键确定输出信号种类

MOV            R4,#0                    ;产生锯齿波信号

S11p11:  JB            P1.1,S11p12

MOV        R4,#1                        ;产生三角波信号

S11p12:  JB            P1.2,S11p13

MOV        R4,#2                         ;产生正弦波信号

S11p13:  JB     P1.3,S11p14

MOV    R4,#3                        ;产生方波信号

S11p14:         JB     P1.4,S1p1

MOV    R4,#4                        ;产生梯形波信号

S1p1:    CJNE                  A,#255,S1n1

S1n2:    CJNE                 R4,#1,Z3

MOV                P2,A                        ;产生三角波的下降沿

LCALL   delay

DEC                A                        ;减小A

JB                P1.0,S12p11         ;扫描检测按键状态确定输出信号波形

MOV                R4,#0                        ;产生锯齿波信号

S12p11:  JB                P1.1,S12p12

MOV        R4,#1                          ;产生三角波信号

S12p12:  JB                P1.2,S12p13

MOV        R4,#2                        ;产生正弦波信号

S12p13:         JB     P1.3,S12p14

MOV             R4,#3                  ;产生方波信号

S12p14:          JB              P1.4,S1p2

MOV    R4,#4                  ;产生梯形波信号

S1p2:       CJNE        A,#0,S1n2

SJMP        S1n1

;**********************************

;                     正弦波

;**********************************

Z3:          MOV                R0,#0

Z3NEXT:         CJNE        R4,#2,F4    ;判断R4,不等于2跳转输出方波

MOV                A,R0

MOV                DPTR,#TAB   ;将正弦波的表头给DPTR,转到表格去查表

MOVC        A,@A+DPTR

MOV                P2,A

LCALL          DELAY

INC                R0

JB                P1.0,Z3p11

MOV                R4,#0

Z3p11:  JB        P1.1,Z3p12        ;扫描检测按键选择输出波形

MOV                  R4,#1

Z3p12:  JB              P1.2,Z3p13

MOV                     R4,#2

Z3p13:  JB        P1.3,Z3p14

MOV       R4,#3

Z3p14:  JB        P1.4,Z3next

MOV     R4,#4

SJMP     Z3NEXT

;*******************************

;             方波

;*******************************

F4:    CJNE                 R4,#3,T5          ;判断R4,不等于3则跳转梯形波

MOV                 A,#0

MOV                 P2,A

CALL         FBDELAY

MOV                 A,#255

MOV                 P2,A

CALL         FBDELAY

F40:     JB           P1.0,F41       ;扫描检测按键分别选择输出波形

MOV          R4,#0

F41:     JB            P1.1,F42

MOV          R4,#1

F42:     JB            P1.2,F43

MOV           R4,#2

F43:     JB          P1.3,F44

MOV          R4,#3

F44:     JB          P1.4,F4

MOV          R4,#4

JMP          F4

;*******************************

;           梯形波

;*******************************

T5:         MOV          A,#0

T5b:    CJNE          R4,#4,T51b                   ;判断R4,不等4则跳转

JMP          T51b1

T51b:   JMP          J0                                    ;跳转到锯齿波那一步

T51b1:  MOV     P2,a

LCALL         delay

INC            A                            ;产生梯形波的上升沿;

JB            P1.0,T5b0            ;扫描检测按键选择输出波形

MOV              R4,#0

T5b0:     JB            P1.1,T5b1

MOV           R4,#1

T5b1:     JB            P1.2,T5b2

MOV           R4,#2

T5b2:     JB        P1.3,T5b3

MOV       R4,#3

T5b3:     JB            P1.4,T5b10

MOV           R4,#4

T5b10:   CJNE                    A,#255,T5b

LCALL             fbdelay

T5b11:   CJNE           R4,#4,T52b

JMP               T52b2

T52b:    JMP               J0

T52b2:         MOV              P2,a

LCALL          delay

DEC            A                                           ;产生梯形波的下降沿

JB             P1.0,T5b12                               ;扫描检测按键选择输出波形

MOV           R4,#0

T5b12:    JB             P1.1,T5b13

MOV           R4,#1

T5b13:    JB             P1.2,T5b14

MOV       R4,#2

T5b14:    JB             P1.3,T5b15

MOV             R4,#3

T5b15:    JB                 P1.4,T5b16

MOV              R4,#4

T5b16:   CJNE                  A,#0,T5b11

JMP                 T5

DELAY:           MOV          R6,#2                     ;延时函数

D1:                MOV          R7,#20

DJNZ  R7,$

DJNZ  R6,D1

RET

fbdelay:   MOV  R1,#40                      ;方波延时函数

D2:        MOV  R2,#255

DJNZ R2,$

DJNZ R1,D2

RET

;正弦波波形表

TAB:

DB 80H,83H,86H,89H,8DH,90H,93H,96H

DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH

DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H

DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H

DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H

DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H

DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH

DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH

DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H

DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH

DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH

DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H

DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H

DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H

DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H

DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H

DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H

DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH

DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H

DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H

DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH

DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H

DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H

DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H

DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H

DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H

DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH

DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H

DB 69H, 6CH, 6FH, 72H, 75H, 78H, 7bH, 7eH

Loop:

jmp Loop

;=============================================

END

c51用汇编语言产生锯齿波,单片机产生四种波形并可任意切换的正弦波发生器汇编程序...相关推荐

  1. 基于stm32单片机的四种波形发生器正弦波、方波、三角波、锯齿波

    基于stm32单片机的四种波形发生器(源程序+仿真+设计报告)全套资料 资料编号:010 具体功能: (1) 可以实现四种波形:正弦波.方波.三角波.锯齿波: (2) 通过按键进行选择,频率可以调整: ...

  2. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  3. 基于51单片机的波形发生器(四种波形)(毕业设计资料)

    四种波形的产生,包括锯齿波.三角波.方波.正弦波.通过LCD液晶显示当前波形以及波形的频率.可以通过按键切换波形,并可以通过按键进行设置当前波形的频率大小,也可以设置频率设置不步进值.资料从主页链接中 ...

  4. 单片机的四种烧写方式

    参考:单片机的四种烧写方式 作者:爱学习的小王呀 发布时间:2020-11-27 20:05:12 网址:https://blog.csdn.net/hongliwong/article/detail ...

  5. 25、基于51单片机函数信号发生器四种波形和频率显示系统设计

    摘  要 本文所设计的系统是利用51单片机和数模转换器件DAC0832产生所需不同信号的低频信号源,即采用STC89C51 单片机作为控制核心,而在外围采用数字/模拟转换电路(DAC0832).运放电 ...

  6. dac0832控制电机驱动流程图_dac0832锯齿波流程图

    实验五DAC0832输出锯齿波_物理_自然科学_专业资料.实验报告五实验名称:DAC0832 生成锯齿波 [实验内容] 通过用单片机控制 DAC0832 输出锯齿波,让实验板上发光二极管...... ...

  7. 【51毕业设计案例】【006】波形发生器(正弦波、矩形波、三角波、锯齿波)-基于51单片机

    功能介绍: 1.输出 正弦波.矩形波.三角波.锯齿波 波形 2.设定波形输出频率 3.设定修改频率的步进值 整体功能简述: 通过按键可以修改输出的波形,一共可以输出四种波形,分别是:正弦波.矩形波.三 ...

  8. MATLAB绘制正弦波、方波、三角波、锯齿波的mif文件

    MATLAB绘制正弦波.方波.三角波.锯齿波的mif文件 % 对波形进行等间隔采样,以采样次数作为 ROM 存储 % 地址,将采集的波形幅值数据做为存储数据写入存储地址对应的存储空间 % 采样次数为 ...

  9. Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真

    DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短.分辨率高和相位连续性好等优点.较容易实现频率.相位以及幅度的数控调 ...

最新文章

  1. ActiveMQ在C#中的应用
  2. 剑指offer: 替换空格 python实现
  3. socket编程的select模型
  4. 动态创建html元素的几种方法
  5. MOS管的工作原理及常见的封装(看完必会)
  6. RabbitMQ基本概念(三)-Centos7下安装RabbitMQ3.6.1
  7. 4t硬盘实际容量是多少_SMR硬盘到底能用不?点进来看看避免踩雷
  8. 怎么安装python3.7 setuptools与pip_如何安装python到setuptools、pip工具安装
  9. Metal Framework基础使用教程
  10. 以后别写程序了,几个程序员很有用的源码网站奉献给大家
  11. OpenGL.tutorial06键盘和鼠标
  12. linux 用户与工作组
  13. appium +夜神模拟器 java代码sendkeys 无法在模拟器输入中文
  14. oeasy教您玩转vim - 28 - 水平移动
  15. ★ Android 各类依赖库文件 收藏 ★
  16. gfortran在linux下安装
  17. 判断一个对象是否属于某一类
  18. Google advertiser api开发概述——入门指南
  19. sqlplus的简单使用和常用命令
  20. 基于php农产品在线销售网站

热门文章

  1. 龙芯OpenHarmony课程 【1】编译烧录
  2. Android audio介绍
  3. 三极管工作原理分析(转载)
  4. png图片自动转ttf字体(使用python实现)
  5. 一个字符究竟占多少字节辨析
  6. ElGamal体制和Diffie-Hellman问题
  7. 【软考 系统架构设计师】企业信息化战略与实施② 信息系统战略规范方法
  8. PDF怎么修改,如何去除PDF中的水印
  9. 微信小程序-插件使用
  10. 【新书推荐】【2018.06】机载雷达信号处理最新进展(第一版)