| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖
标题:做一个方波发生器源程序 DOS下运行有错
只看楼主 加入收藏
jnwangcan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-7-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
做一个方波发生器源程序 DOS下运行有错
我在下面上传了两个附件  其中那个方波发生器源程序运行有错 是自dos下运行了  不过电机那个没错。哪个仁兄帮忙改改




六.    详细设计

a)    相关芯片介绍及初始化
DAC0832:DAC0832是一个8位的D/A转换器,由8位输入寄存器,8位DAC寄存器,8位D/A转换器及逻辑控制单元等功能电路构成。
各端口介绍: DO~D7:数字信号输入端
             ILE:输入寄存器允许,高电平有效
              CS:片选信号,低电平有效
              WR1:写信号1,低电平有效
              WR":写信号2,低电平有效
              OUT1,IOUT2:DAC电流输出端
             RFB:反馈电阻是集成在片内的外接运放的反馈  
         VREF基准电压(-10~+10)V
             Vcc:电源电压(+5~+15)V
            AGND:模拟地,DGND是数字地两者可接在一起使用
8255A初始化程序:
8255A控制口地址:FF2BH
A口:FF28H
B口:FF29H
C口:FF2AH
程序开始即对8255A进行初始化,并且读入PC口的数值(通过开关键进行输入),然后将读到的数值存入BL寄存器。同时判断将要输出的波形,再确认要输出的波形后,又选择该波形的频率,同时期间不断的读取PC口的数值(通过调用键扫子程序)一旦出现PC口数值变化(既有键按下)则跳到程序的开始部分重新选择波形,如此反复。
b)    子程序设计
(1).方波子程序。在该子程序里,通过控制CX寄存器的值来改变频率(周期),通过用DAC0832的数模转换功能对AL和AL的取反值的输出来实现方波的输出。
(2).锯齿波子程序。在该子程序里,通过对AL数值的增加来实现锯齿波的输出,通过数值增加的大小来改变频率。
(3). 三角波子程序。在该子程序里,通过判断AL是否小于0FCH来实现三角波上沿和下沿的输出。通过对AL值增加的大小来改变波形的频率。
(4).键扫子程序。在该子程序里,通过从PC口读入的值和之前读入的值(在BL中)的比较来判断是否有键按下。
c)    源程序设计
CODE SEGMENT
ASSUME CS:CODE
    ORG 10A0H
DAPORT EQU 0020H
F    DW 00H        ;初始化
J    DB 00H
S    DB 01H
ORG 10A0H
START:                  ;init 8255A
        MOV  DX,0FF2BH
        MOV  AL,10000001B;方式命令字,PC0~PC3输入
        OUT  DX,AL    ;control pc
BEGIN:    MOV DX,0FF2AH
        IN  AL,DX    ;读PC口值
    MOV  BL,AL    ;存入BL
        CMP  BL,02H    ;"跳跃表",选择波形
        JB  FWAVE    ;方波00~01,锯齿波02~03,三角波,04~05
        CMP  BL,04H
        JB  JWAVE
        CMP  BL,06H
        JB  SWAVE
        JMP  BEGIN  ;FWAVE
F01:        MOV  F,0300H    ;改变频率
           JMP  FDACON1

FWAVE:    MOV  AL,0FFH   
        CMP  BL,01H    ;选择频率
        JE  F01        
        MOV  F,0400H
FDACON1:
        CALL   RDPC    ;调用键扫子程序
        MOV  DX,DAPORT
        OUT  DX,AL
        MOV  CX,F
FDACO2:   
LOOP  FDACO2
        NOT  AL
        JMP  FDACON1  ;JWAVE
JUMP1:  JMP  BEGIN    ;充当键扫子程序 RDPC 的跳板。*.*
J01:        MOV  J,02H    ;改变频率
        JMP  JDACON1

JWAVE:    MOV AL,0H
        CMP BL,03H    ;选择频率
        JE  J01
        MOV J,01H
JDACON1:
        CALL  RDPC    ;调用键扫子程序
        MOV  DX,DAPORT
        OUT  DX,AL
        ADD  AL,J
        JMP  JDACON1

;SWAVE
S01:    MOV  AL,0H    ;恢复AL为0
        MOV  S,02H    ;改变频率
        JMP L1
SWAVE:    MOV AL,0H
        CMP  BL,05H    ;选择频率
        JE  S01
        MOV  S,01H

L1:     CALL  RDPC    ;调用键扫子程序
        MOV  DX,DAPORT
        OUT  DX,AL
        ADD  AL,S
        CMP  AL,0FCH    ;若AL=0FEH则置AL=0FFH,下坡
        JNA L1
        MOV  AL,0FFH

L2:     CALL RDPC    ;键扫
        OUT  DX,AL
        SUB  AL,S
        CMP  AL,02H    ;若AL<02H,则上坡
        JNB  L2
        JMP  L1
RDPC     PROC    NEAR    ;键扫子程序
        PUSH  AX
        PUSH  DX
        MOV  DX,0FF2AH    ;键扫
        IN   AL,DX
        CMP  BL,AL    ;有没键按下
        JNE  JUMP1
        POP  DX
        POP  AX
        RET
RDPC     ENDP

CODE  ENDS
END  START


[ 本帖最后由 jnwangcan 于 2010-7-13 14:20 编辑 ]
搜索更多相关主题的帖子: 发生器 转换器 寄存器 源程序 高电平 
2010-07-13 10:11
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
图都是‘白板儿’,完全看不到啊。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-13 11:32
jnwangcan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-7-13
收藏
得分:0 
2010-07-13 14:16
jnwangcan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-7-13
收藏
得分:0 
2010-07-13 14:17
快速回复:做一个方波发生器源程序 DOS下运行有错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040878 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved