找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1339|回复: 1
收起左侧

函数发生器的程序,能帮我修改下吗?有些许错误的

[复制链接]
ID:360413 发表于 2018-6-28 12:31 | 显示全部楼层 |阅读模式
io0832a        equ 290h
data  segment   
sin     db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh
    db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h
    db 80h,66h,4eh,38h,25h,15h,09h,04h
    db 00h,04h,09h,15h,25h,38h,4eh,66h           ;正弦波数据
mesg    db '1. sanjiao',0dh,0ah,'$'
        db'2. fangbo',0dh,0ah,'$'
        db'3. sinbo',0dh,0ah,'$'
data ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
        MOV DS,AX
AG:        MOV DX,OFFSET mesg;显示字符串
        MOV AH,9
        INT 21H
        ;MOV BL,00H
LOOP1: MOV AH,01H ;判断是否有按键按下
        INT 21h
        cmp al,'1'
        JNZ N1
        CALL sanjiao ;三角波
N1:        CMP AL,'2'
        JNZ N2
        CALL fangbo ;方波       
N2:        CMP AL,'3'
        JNZ N3
        CALL sin ;正弦波       
        push dx
        mov  ah,06h          ;判断是否有键按下
        mov  dl,0ffh
        int 21h
        pop dx
        je  AG
        MOV AH,4CH
        INT 21H
;三角波
sanjiao proc
start: mov cl,0
       mov dx,io0832a
lll:   mov al,cl
            out dx,al
            add cl,10
            push dx
            mov ah,06h      ;判断是否有键按下
            mov dl,0ffh
            int 21h
            sub cl,10
            push dx
            mov ah,06h      ;判断是否有键按下
            mov dl,0ffh
            int 21h
        pop dx
      jz  lll       ;若无则转LLL
        ret
sanjiao endp


;方波
fangbo proc
start: mov cl,10
       mov dx,io0832a
lll:   mov al,cl
    out dx,al
  mov cx,2            ;延迟
delay:  loop delay
    sub cl,10
mov cx,2            ;延迟
delay:  loop delay
    push dx
    mov ah,06h      ;判断是否有键按下
    mov dl,0ffh
    int 21h

    pop dx
    jz  lll       ;若无则转LLL
        ret
fangbo endp  



;正弦波
sin PROC
start:  mov ax,data
    mov ds,ax
ll:     mov si,offset sin            ;置正弦波数据的偏移地址为SI
    mov bh,32                    ;一组输出32个数据
lll:    mov al,[si]                  ;将数据输出到D/A转换器
    mov dx,io0832a
    out dx,al
    mov ah,06h
    mov dl,0ffh
    int 21h
    jne exit
    mov cx,1
delay:  loop delay                   ;延时
    inc si                       ;取下一个数据
    dec bh
    jnz lll                      ;若未取完32个数据则转lll
    jmp  ll
    ret
code ends
   end start



回复

使用道具 举报

ID:1 发表于 2018-6-28 17:01 | 显示全部楼层
应该要先说明错误详情,帖子先转移到冷门区,待补充说明完整后转移至热门区
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表