找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1350|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

函數(shù)發(fā)生器的程序,能幫我修改下嗎?有些許錯誤的

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:360413 發(fā)表于 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           ;正弦波數(shù)據(jù)
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       ;若無則轉(zhuǎn)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       ;若無則轉(zhuǎn)LLL
        ret
fangbo endp  



;正弦波
sin PROC
start:  mov ax,data
    mov ds,ax
ll:     mov si,offset sin            ;置正弦波數(shù)據(jù)的偏移地址為SI
    mov bh,32                    ;一組輸出32個數(shù)據(jù)
lll:    mov al,[si]                  ;將數(shù)據(jù)輸出到D/A轉(zhuǎn)換器
    mov dx,io0832a
    out dx,al
    mov ah,06h
    mov dl,0ffh
    int 21h
    jne exit
    mov cx,1
delay:  loop delay                   ;延時
    inc si                       ;取下一個數(shù)據(jù)
    dec bh
    jnz lll                      ;若未取完32個數(shù)據(jù)則轉(zhuǎn)lll
    jmp  ll
    ret
code ends
   end start



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-6-28 17:01 | 只看該作者
應(yīng)該要先說明錯誤詳情,帖子先轉(zhuǎn)移到冷門區(qū),待補充說明完整后轉(zhuǎn)移至熱門區(qū)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表