新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     >>W3CHINA.ORG讨论区<<     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWLXML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → DOM与ASP的接口问题? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6724 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: DOM与ASP的接口问题? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     cmy8132 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:84
      门派:XML.ORG.CN
      注册:2004/5/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cmy8132发送一个短消息 把cmy8132加入好友 查看cmy8132的个人资料 搜索cmy8132在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cmy8132的博客楼主
    发贴心情 DOM与ASP的接口问题?

    我做的一个小问题是知识查询与疑难问题系统,用的是asp和xml做的,其中的查询模块如下实现,如果用C,C++如何实现?
    <html>t="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>查询结果</title>
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) {  //reloads the window if Nav4 resized
      if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
        document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
      else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    //-->
    </script>
    </head>

    <body bgcolor="#000000">
    <div align="center">
      <center>
      <table border="0" width="611" cellspacing="0" cellpadding="0" height="528" background="images/i-3-1.gif">
        <!--DWLayoutTable-->
        <tr>
          <td width="609" height="539" valign="top" background="images/t-02.gif">
            <div align="right">
              <table border="0" width="91%" cellspacing="5" cellpadding="5" height="477">
                <!--DWLayoutTable-->
                <tr>
                  <td width="1" height="80"></td>
                  <td width="100%"> <p align="center"><font color="#FF3366" size="4" face="仿宋_GB2312"><em><strong>我
                       们 一 直 在 努 力</strong></em></font></td>
                </tr>
                <tr bgcolor="#006666">
                  <td height="61" colspan="2" valign="top"><div align="center"><font color="#00FF00" size="6"><strong>问题答案是</strong></font></div></td>
                </tr>
                <tr>
                  <td height="349" colspan="2" valign="middle" bgcolor="#006460">
                    <div align="left">
                      <form name="form1" method="post" action="">
                        <p>

                  <%
          question=request.form("std_question")
          question=trim(question)
          length=len(question)
          question=left(question,length-4)
          keywords=SPLIT(question,"的")
         keyword_num=ubound(keywords)+1
         Set DomXML=Server.CreateObject("MSXML.DOMDocument")
         DomXML.Load "d:/知识查询与疑难问题系统/ds.XML"
         Set root=DomXML.documentElement
         set childNodes=root.selectNodes("//"&keywords(0)) '查找符合第一个关键字的所有节点
         if childNodes.length=0 then response.Write "<font color='#FF3366'>"&"对不起,找不到你要的问题的答案!" &"</font>"

         dim stack()
         redim stack(100,1)
         top=0
         for i=0 to childNodes.length-1
             set child=childNodes.item(i)
             set stack(top,0)=child
             stack(top,1)=0
             top=top+1
         next

         answer_order=1
         while top>0
             top=top-1
             set parent=stack(top,0)
             key_i=stack(top,1)
             if key_i+1=keyword_num then  '关键字匹配完毕
                       answer=question
                       answer=CStr(answer_order)&"."&answer
                       answer_order=answer_order+1
                       set answerNodes=parent.childNodes
                       if answerNodes.length>1 then
                          answer=answer&"可分为:"
                       else
                          answer=answer&"是:"
                       end if
                       for m=0 to answerNodes.length-2
                            set child=answerNodes.item(m)
                            if child.nodeType=1 or child.nodetype=2 then         'Current node is element node
                              answer=answer&child.nodename&"、"
                            elseif child.nodeType=3 or child.nodeType=4 then
                              answer=answer&"<br>"&child.text&"<br>"
                            end if
                       next
                       set child=answerNodes.item(m)
                       if m>0 then
                         if child.nodeType=1 then
                            answer=answer&"和"&child.nodeName&"。<hr>"
                         elseif child.nodeType=3 or child.nodeType=4 then
                           answer=answer&"和"&child.text&"。<hr>"
                         end if
                       else
                          if child.nodeType=1 then
                            answer=answer&child.nodeName&"。<hr>"
                          elseif child.nodeType=3 or child.nodeType=4 then
                            answer=answer&child.text&"。<hr>"
                          end if
                       end if
                       response.Write "<font color='#FF3366'>"&answer&"</font>"
             else
             set childSet=parent.childNodes
             finded=FALSE
             for j=0 to childSet.length-1
                set child=childSet.item(j)
                childName=child.nodeName
                if strcomp(childName,keywords(key_i+1))=0 then
                   set stack(top,0)=child
                   stack(top,1)=key_i+1
                   top=top+1
                   finded=TRUE
                end if
             next
             if finded=FALSE then
                for k=0 to childSet.length-1
                   set child=childSet.item(k)
                   set stack(top,0)=child
                   stack(top,1)=key_i
                   top=top+1
                next
             end if
            end if
         wend
         %>


                             </p>
                        </form>
                      <p>
                        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="144" height="39">
                          <param name="movie" value="button3.swf">
                          <param name="quality" value="high">
                          <param name="base" value=".">
                          <param name="bgcolor" value="#006666">
                          <embed src="button3.swf" width="144" height="39" base="."  quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" bgcolor="#006666"></embed>
                        </object>
                      </p>
                    </div></td>
                    
                </tr>
                <tr>
                  <td height="36" colspan="2" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
                      <!--DWLayoutTable-->
                      <tr>
                        <td width="383" height="26" valign="top">   <font color="#66FFFF" size="4">      </font></td>
                        <td width="151" valign="top"><div align="center"><a href="main.htm"><font color="#33FFFF">返回</font></a></div></td>
                      </tr>
                    </table></td>
                </tr>
              </table>
            </div></td>
          <td width="2">&nbsp;</td>
        </tr>
      </TABLE>
    <CENTER>
      </DIV>
    </CENTER></BODY></HTML>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/15 19:37:00
     
     cmy8132 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:84
      门派:XML.ORG.CN
      注册:2004/5/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cmy8132发送一个短消息 把cmy8132加入好友 查看cmy8132的个人资料 搜索cmy8132在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cmy8132的博客2
    发贴心情 
    希望大家多多指教?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/15 19:38:00
     
     Eve 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:118
      门派:XML.ORG.CN
      注册:2004/5/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Eve发送一个短消息 把Eve加入好友 查看Eve的个人资料 搜索Eve在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Eve的博客3
    发贴心情 

    ----------------------------------------------
    [color=red]各位热心者帮忙看看这帖子的问题有什么好的方法处理 [url]http://bbs.xml.org.cn/dispbbs.asp?boardID=1&ID=7751[/url] 谢谢!![/color]

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/20 21:44:00
     
     hyandlsz 帅哥哟,离线,有人找我吗?
      
      
      头衔:侠
      等级:大二期末(Java考了96分!)
      文章:117
      积分:503
      门派:W3CHINA.ORG
      注册:2004/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hyandlsz发送一个短消息 把hyandlsz加入好友 查看hyandlsz的个人资料 搜索hyandlsz在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hyandlsz的博客4
    发贴心情 
    关键是c,c++中有无这样的接口,DOM

    ----------------------------------------------
    人最大的烦恼就是记性太好,如果什么都可以忘了,以后的每一天将会是一个新的开始,那你说多开心!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/28 9:43:00
     
     chencong7308570981 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:11
      积分:124
      门派:XML.ORG.CN
      注册:2005/4/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chencong7308570981发送一个短消息 把chencong7308570981加入好友 查看chencong7308570981的个人资料 搜索chencong7308570981在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chencong7308570981的博客5
    发贴心情 
    能否把XML文档和界面的源代码给看看!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/23 9:37:00
     
     chencong7308570981 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:11
      积分:124
      门派:XML.ORG.CN
      注册:2005/4/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chencong7308570981发送一个短消息 把chencong7308570981加入好友 查看chencong7308570981的个人资料 搜索chencong7308570981在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chencong7308570981的博客6
    发贴心情 
    <?xml version="1.0" encoding="gb2312"?>
    <?xml-stylesheet type="text/xsl" href="chip.xsl"?>
    <!DOCTYPE CHIP-LIST SYSTEM "chip.dtd">
    <CHIP-LIST>  
      <CHIP>
        <NAME>8253</NAME>
     <FUNCTION>
      <SUMMARIZE>
         <L L_ID="B1">8253是Intel 公司生产的可编程计数器/定时器,主要用于需要有定时信号的控制系统或计算机中,掌握其功能特点及在系统中的编程方法,对于实时控制系统中的计数/定时计数有很大帮助。 常见的定时和计数方法有:</L>
               <L L_ID="B2">软定时:它运用软件编写程序产生等待延时和定时,是一种常用的方法。</L>
               <L L_ID="B3">硬定时:在电路中应用单稳延时电路或计数电路来实现延时和定时。</L>
               </SUMMARIZE>
      <APPEARANCE source="pic1"/>
     </FUNCTION>
     <STRUC-PIN>
       <STRUC>
         <PIC source="pic2"/>
         <L L_ID="B4">8253由CPU接口,内部控制电路以及三个计算器通道所组成。</L>
            <L L_ID="B5">/CS /RD /WR A1  A2 寄存器选择及操作 </L>
            <L L_ID="B6"> 0   1    0   0   0 写入计数器0 </L>
            <L L_ID="B7"> 0   1    0   0   1 写入计数器1 </L>
            <L L_ID="B8"> 0   1    0   1   0 写入计数器2 </L>
            <L L_ID="B9"> 0   1    0   1   1 写控制字 </L>
            <L L_ID="B10"> 0   0    1   0   0 读计数器0 </L>
            <L L_ID="B11"> 0   0    1   0   1 读计数器1 </L>
            <L L_ID="B12"> 0   0    1   1   0 读计数器2 </L>
            <L L_ID="B13"> 0   0    1   1   1 无操作高阻态 </L>
            <L L_ID="B14"> 1   X    X   X   X 禁止高阻态 </L>
            <L L_ID="B15"> 0   1    1   X   X 无操作高阻态</L> </STRUC>

         <PIN>
             <L L_ID="B16">8253典型信号作用: </L>

             <L L_ID="B17"> CLK:时钟信号的作用是在8253进行计数或定时工作时,每输入一个CLK,便使定时或计数值减1,它是计量的基本时钟。 </L>

             <L L_ID="B18"> GATE:门选通信号,其作用是控制定时或计数工作的开始。对于六种不同的工作方式,GATE信号的有效方式不同。 </L>

             <L L_ID="B19">OUT:计数器输出信号,其作用是当计数器工作时,当定时或计数值减为0,则OUT就输出一信号用以指示定时或计数到。此信号可用于定时或计数控制,也可作为中断请求信号。 </L></PIN></STRUC-PIN>
        <WORKING>
          <L L_ID="A1">8253中有一个控制字寄存器接受CPU写入方式控制字,此方式控制字将控制相应的计数的工作方式。控制字寄存器只能写入,不能读出。控制字的格式及功能如下:</L>
             <L L_ID="A2"> D7  D6  D5  D4  D3 D2 D1 D0</L>
             <L L_ID="A3"> SC1 SC0 RL1 RL0 M2 M1 M0 BCD</L>

             <L L_ID="A4">其中的符号说明如下:</L>

             <L L_ID="A5">  (1)D7,D6(SC1,SC0):用于本方式控制字控制的计数定时器通道。8253有三个独立工作的通道,即:</L>

             <L L_ID="A6">SC1.SC0=00-------选择0号计数器;</L>
             <L L_ID="A7">SC1.SC0=01-------选择1号计数器;</L>
             <L L_ID="A8">SC1.SC0=10-------选择2号计数器;</L>
             <L L_ID="A9">SC1.SC0=11-------非法。</L>

             <L L_ID="A10">(2)D5,D4(RL1,RL0):用来控制向计数器读/写的字节数(1或2个字节)及读写高低字节的顺序,其中:</L>

             <L L_ID="A11">RL1.RL0=00------为一特殊命令,它把SC1.SC0指定的计数器的当前值锁定在锁定</L>
             <L L_ID="A12">寄存器中,以便随时去读取它;</L>
             <L L_ID="A13">RL1.RL0=00------仅读/写一个低字节;</L>
             <L L_ID="A14">RL1.RL0=00------仅读/写一个高字节;</L>
             <L L_ID="A15">RL1.RL0=00------读/写2个字节,先是地字节低字节,后高字节。</L>

             <L L_ID="A16">(3)D3~D1(M3~M0):用来选择计数器以下6种工作方式中的一种:</L>

             <L L_ID="A17">M2.M1.M0=000------方式0;</L>
             <L L_ID="A18">M2.M1.M0=001------方式1; </L>
             <L L_ID="A19">M2.M1.M0=010------方式2;</L>
             <L L_ID="A21">M2.M1.M0=100------方式4;</L>
             <L L_ID="A22">M2.M1.M0=101------方式5;</L>

             <L L_ID="A23">(4)D0(BCD):用来选择计数器写入数据时,是按二进制读写还是按十进制数读写。</L>

             <L L_ID="A24">BCD=0-------二进制;</L>
             <L L_ID="A25">BCD=0-------二进制;</L></WORKING>
       <INITIAL>
         <L L_ID="A26">8253的计数器有六种工作方式:方式0 方式1 方式2 方式3 方式4 方式5  </L>
            <L L_ID="A27">它们的区别三点: 1.输出波形的不同; 2.启动计数器的触发方式不同; 3.计数过程中门控信号对计数操作的影响不同区分。</L>
            <L L_ID="A28">方式0(计数结束中断) </L>
            <L L_ID="A29">写入方式命令字之后计数器的OUT引脚变成低电平,在保持GATE信号为高电平(即允许计数)的 情况下,选中的"计数初值"寄存器被加载后,下一个CLK脉冲下降沿开始以减法计数,此时计 数器OUT引脚为低电平,直至计数器的值减为0,OUT变为高电平,这样完成一次计数过程。要再 次计数需再次传送"方式0控制字"或进入新的计数初值,计数结束后OUT为高电平的上升沿可用 作中断申请。这种方式用于"事件"计数很不方便。此种方式的计数过程及输出波形如下图:</L>
            <L L_ID="A30">GATE为高时允许计数,低时禁止计数。若计数过程中GATE由高变低则使当时的计数值保 留在计数器中而暂停计数,直至GATE再次为高时继续计数,暂停时OUT为低。计数过程中 若写入新的计数初值,则写完新值后在下一CLK脉冲开始重新计数。</L>

            <L L_ID="A31">方式1(程序可控单稳) </L>
            <L L_ID="A32">写入方式命令字和加载计数初值后OUT为高电平,直接由门控信号GATE的上升沿触发使 OUT为低,在下一CLK的下降沿开始减法计数,OUT一直为低直到计数值减为0时才变为 高电平,这样完成一个不改动初值再送入GATE信号的上升沿则再次触发。OUT信号由低到高的跳变可用作中断 申请。 单脉冲输出过程,计数过程及输出波形如下图:  </L>

            <L L_ID="A33">方式2(频率发生器)</L>
            <L L_ID="A34">写入方式命令之后OUT为高电平,若此时GATE为高则在加载计数初值寄存器后的一个CLK的 下降沿将计数初值置入计数器并开始减法计数。计数值减为一时OUT变为低,减至0时变为 高,同时自动将计数初值置入计数器继续进行减法计数形成循环计数,在OUT输出一系列周 期为N个时钟周期CLK,负脉冲宽度为一个CLK的信号,如下图所示: </L>
            <L L_ID="A35">方式2的功能是以计数初值N为分频因子的分频器,常用来产生实时的时钟。GATE为高时允许 计数,低时禁止计数,如GATE由低变高,则将计数初值置入计数器开始重新计数。方式2的功能是以计数初值N为分频因子的分频器,常用来产生实时的时钟。GATE为高时允许 计数,低时禁止计数,如GATE由低变高,则将计数初值置入计数器开始重新计数。</L>

           <L L_ID="A36">方式3(方波发生器)</L>
           <L L_ID="A37">与方式2相似,仅OUT输出波形不同,它输出的是一系列方波,其占空比可以相等也可不等,与 计数初值有关,常用作波特率发生器。计数初值N为偶数时输出对称的方波,如计数初值为奇 数且输出是高电平,则第一个时钟将计数减一,后面的时钟脉冲对计数减二,在停止后输出变 为低电平,并装入全量计数值,此时第一个时钟脉冲(继重输入之后)对计数器减3,以后的时 钟脉冲对计数器减2,直至结束,然后重复整个过程。波形如下图:</L>
           <L L_ID="A38">计数期间如果计数是奇数则在(N 1)/2的时间内输出为高电平,而在(N 1)/2的相同时间内输出为低电平。</L>
           <L L_ID="A39">方式4(软件触发脉冲)</L>
           <L L_ID="A40">写入方式命令后OUT为高电平,在GATE为高电平的情况下加载计数初值寄存器后,下一个CLK的 下降沿开始减法计数,计数值减为0时OUT变为低电平,经过一个CLK后又变为高电平,即在第 N 1个CLK周期上输出一个负脉冲,宽 度为一个CLK,如下图: </L>
           <L L_ID="A41">GATE为高时允许计数,低电平禁止计数,再次为高时,计数器从计数初值重新开始减法计数。 </L>

          <L L_ID="A42">方式5(硬件触发脉冲)</L>
          <L L_ID="A43">写入"方式控制字"和加载"计数初值"后,OUT变为高电平,直接由GATE的上升沿触发,在下 一个时钟CLK的下降沿开始减法计数,计数结束后OUT输出变为低电平,此后又变为高电平,即 在第N 1个CLK的周期上输出一个单时钟周期负脉冲,如下图:</L>
          <L L_ID="A44">GATE的上升沿作为触发,而低电平,高电平及下降沿对计数过程无影响。</L>
       </INITIAL>
       <APPLICATION>
          <L L_ID="A45">本例中利用8253的定时计数特性来控制扬声器的发声频率和发声长短,电路图如下:</L>
          <L L_ID="A46">OUT2发送600赫兹方波,定时长短由GATE2控制,滤波器前的与门由8255的PB1控制。PB0和PB1同时为高的时间来控制是发长音还是发短音。8253的地址为040H~043H。8255A的口地址为60H~63H。</L>
          <L L_ID="A47">程序如下:</L>
          <L L_ID="A48">SSP PROC NEAR</L>
          <L L_ID="A49">MOV AL,10110110B ;计数器2,初值为16位,方式3,二进制格式</L>
          <L L_ID="A50">OUT 43H,AL ;计数器2的方式控制寄存器地址</L>
          <L L_ID="A51">MOV AL,1983 ;1.19MHz/600Hz=1983,计数初值</L>
          <L L_ID="A52">OUT 42H,AL ;发送低字节</L>
          <L L_ID="A53">MOV AL,AH</L>
          <L L_ID="A54">OUT 42H,AL ;发送高字节</L>
          <L L_ID="A55">IN AL,61H ;读8255B口原输出值</L>
          <L L_ID="A56">MOV AH,AL ;输出值保存AH中</L>
          <L L_ID="A57">OR AL,03H ;使PB1 PB0均为1</L>
          <L L_ID="A58">OUT 61H,AL ;打开GATE2,输出方波</L>
          <L L_ID="A59">SUB CX,CX</L>
          <L L_ID="A60">L:LOOP L ;延时循环</L>
          <L L_ID="A61">DEC BL ;BL为子程序入口条件</L>
          <L L_ID="A62">JNZ L ;BL=6,发长声</L>
          <L L_ID="A63">BL=1,发短声</L>
          <L L_ID="A64">MOV AL,AH ;取回AH中的8255 B口的原输出值</L>
          <L L_ID="A65">OUT 61H,AL ;恢复8255 B口</L>
          <L L_ID="A66">RET ;返回</L>
          <L L_ID="A67">SSP ENDP</L></APPLICATION>
       </CHIP>
       
         <CHIP>
        <NAME>8259</NAME>
     <FUNCTION>
      <SUMMARIZE>
         <L L_ID="B1">8253是Intel 公司生产的可编程计数器/定时器,主要用于需要有定时信号的控制系统或计算机中,掌握其功能特点及在系统中的编程方法,对于实时控制系统中的计数/定时计数有很大帮助。 常见的定时和计数方法有:</L>
               <L L_ID="B2">软定时:它运用软件编写程序产生等待延时和定时,是一种常用的方法。</L>
               <L L_ID="B3">硬定时:在电路中应用单稳延时电路或计数电路来实现延时和定时。</L>
               </SUMMARIZE>
      <APPEARANCE source="pic1"/>
     </FUNCTION>
     <STRUC-PIN>
       <STRUC>
         <PIC source="pic2"/>
         <L L_ID="B4">8253由CPU接口,内部控制电路以及三个计算器通道所组成。</L>
            <L L_ID="B5">/CS /RD /WR A1  A2 寄存器选择及操作 </L>
            <L L_ID="B6"> 0   1    0   0   0 写入计数器0 </L>
            <L L_ID="B7"> 0   1    0   0   1 写入计数器1 </L>
            <L L_ID="B8"> 0   1    0   1   0 写入计数器2 </L>
            <L L_ID="B9"> 0   1    0   1   1 写控制字 </L>
            <L L_ID="B10"> 0   0    1   0   0 读计数器0 </L>
            <L L_ID="B11"> 0   0    1   0   1 读计数器1 </L>
            <L L_ID="B12"> 0   0    1   1   0 读计数器2 </L>
            <L L_ID="B13"> 0   0    1   1   1 无操作高阻态 </L>
            <L L_ID="B14"> 1   X    X   X   X 禁止高阻态 </L>
            <L L_ID="B15"> 0   1    1   X   X 无操作高阻态</L> </STRUC>

         <PIN>
             <L L_ID="B16">8253典型信号作用: </L>

             <L L_ID="B17"> CLK:时钟信号的作用是在8253进行计数或定时工作时,每输入一个CLK,便使定时或计数值减1,它是计量的基本时钟。 </L>

             <L L_ID="B18"> GATE:门选通信号,其作用是控制定时或计数工作的开始。对于六种不同的工作方式,GATE信号的有效方式不同。 </L>

             <L L_ID="B19">OUT:计数器输出信号,其作用是当计数器工作时,当定时或计数值减为0,则OUT就输出一信号用以指示定时或计数到。此信号可用于定时或计数控制,也可作为中断请求信号。 </L></PIN></STRUC-PIN>
        <WORKING>
          <L L_ID="A1">8253中有一个控制字寄存器接受CPU写入方式控制字,此方式控制字将控制相应的计数的工作方式。控制字寄存器只能写入,不能读出。控制字的格式及功能如下:</L>
             <L L_ID="A2"> D7  D6  D5  D4  D3 D2 D1 D0</L>
             <L L_ID="A3"> SC1 SC0 RL1 RL0 M2 M1 M0 BCD</L>

             <L L_ID="A4">其中的符号说明如下:</L>

             <L L_ID="A5">  (1)D7,D6(SC1,SC0):用于本方式控制字控制的计数定时器通道。8253有三个独立工作的通道,即:</L>

             <L L_ID="A6">SC1.SC0=00-------选择0号计数器;</L>
             <L L_ID="A7">SC1.SC0=01-------选择1号计数器;</L>
             <L L_ID="A8">SC1.SC0=10-------选择2号计数器;</L>
             <L L_ID="A9">SC1.SC0=11-------非法。</L>

             <L L_ID="A10">(2)D5,D4(RL1,RL0):用来控制向计数器读/写的字节数(1或2个字节)及读写高低字节的顺序,其中:</L>

             <L L_ID="A11">RL1.RL0=00------为一特殊命令,它把SC1.SC0指定的计数器的当前值锁定在锁定</L>
             <L L_ID="A12">寄存器中,以便随时去读取它;</L>
             <L L_ID="A13">RL1.RL0=00------仅读/写一个低字节;</L>
             <L L_ID="A14">RL1.RL0=00------仅读/写一个高字节;</L>
             <L L_ID="A15">RL1.RL0=00------读/写2个字节,先是地字节低字节,后高字节。</L>

             <L L_ID="A16">(3)D3~D1(M3~M0):用来选择计数器以下6种工作方式中的一种:</L>

             <L L_ID="A17">M2.M1.M0=000------方式0;</L>
             <L L_ID="A18">M2.M1.M0=001------方式1; </L>
             <L L_ID="A19">M2.M1.M0=010------方式2;</L>
             <L L_ID="A21">M2.M1.M0=100------方式4;</L>
             <L L_ID="A22">M2.M1.M0=101------方式5;</L>

             <L L_ID="A23">(4)D0(BCD):用来选择计数器写入数据时,是按二进制读写还是按十进制数读写。</L>

             <L L_ID="A24">BCD=0-------二进制;</L>
             <L L_ID="A25">BCD=0-------二进制;</L></WORKING>
       <INITIAL>
         <L L_ID="A26">8253的计数器有六种工作方式:方式0 方式1 方式2 方式3 方式4 方式5  </L>
            <L L_ID="A27">它们的区别三点: 1.输出波形的不同; 2.启动计数器的触发方式不同; 3.计数过程中门控信号对计数操作的影响不同区分。</L>
            <L L_ID="A28">方式0(计数结束中断) </L>
            <L L_ID="A29">写入方式命令字之后计数器的OUT引脚变成低电平,在保持GATE信号为高电平(即允许计数)的 情况下,选中的"计数初值"寄存器被加载后,下一个CLK脉冲下降沿开始以减法计数,此时计 数器OUT引脚为低电平,直至计数器的值减为0,OUT变为高电平,这样完成一次计数过程。要再 次计数需再次传送"方式0控制字"或进入新的计数初值,计数结束后OUT为高电平的上升沿可用 作中断申请。这种方式用于"事件"计数很不方便。此种方式的计数过程及输出波形如下图:</L>
            <L L_ID="A30">GATE为高时允许计数,低时禁止计数。若计数过程中GATE由高变低则使当时的计数值保 留在计数器中而暂停计数,直至GATE再次为高时继续计数,暂停时OUT为低。计数过程中 若写入新的计数初值,则写完新值后在下一CLK脉冲开始重新计数。</L>

            <L L_ID="A31">方式1(程序可控单稳) </L>
            <L L_ID="A32">写入方式命令字和加载计数初值后OUT为高电平,直接由门控信号GATE的上升沿触发使 OUT为低,在下一CLK的下降沿开始减法计数,OUT一直为低直到计数值减为0时才变为 高电平,这样完成一个不改动初值再送入GATE信号的上升沿则再次触发。OUT信号由低到高的跳变可用作中断 申请。 单脉冲输出过程,计数过程及输出波形如下图:  </L>

            <L L_ID="A33">方式2(频率发生器)</L>
            <L L_ID="A34">写入方式命令之后OUT为高电平,若此时GATE为高则在加载计数初值寄存器后的一个CLK的 下降沿将计数初值置入计数器并开始减法计数。计数值减为一时OUT变为低,减至0时变为 高,同时自动将计数初值置入计数器继续进行减法计数形成循环计数,在OUT输出一系列周 期为N个时钟周期CLK,负脉冲宽度为一个CLK的信号,如下图所示: </L>
            <L L_ID="A35">方式2的功能是以计数初值N为分频因子的分频器,常用来产生实时的时钟。GATE为高时允许 计数,低时禁止计数,如GATE由低变高,则将计数初值置入计数器开始重新计数。方式2的功能是以计数初值N为分频因子的分频器,常用来产生实时的时钟。GATE为高时允许 计数,低时禁止计数,如GATE由低变高,则将计数初值置入计数器开始重新计数。</L>

           <L L_ID="A36">方式3(方波发生器)</L>
           <L L_ID="A37">与方式2相似,仅OUT输出波形不同,它输出的是一系列方波,其占空比可以相等也可不等,与 计数初值有关,常用作波特率发生器。计数初值N为偶数时输出对称的方波,如计数初值为奇 数且输出是高电平,则第一个时钟将计数减一,后面的时钟脉冲对计数减二,在停止后输出变 为低电平,并装入全量计数值,此时第一个时钟脉冲(继重输入之后)对计数器减3,以后的时 钟脉冲对计数器减2,直至结束,然后重复整个过程。波形如下图:</L>
           <L L_ID="A38">计数期间如果计数是奇数则在(N 1)/2的时间内输出为高电平,而在(N 1)/2的相同时间内输出为低电平。</L>
           <L L_ID="A39">方式4(软件触发脉冲)</L>
           <L L_ID="A40">写入方式命令后OUT为高电平,在GATE为高电平的情况下加载计数初值寄存器后,下一个CLK的 下降沿开始减法计数,计数值减为0时OUT变为低电平,经过一个CLK后又变为高电平,即在第 N 1个CLK周期上输出一个负脉冲,宽 度为一个CLK,如下图: </L>
           <L L_ID="A41">GATE为高时允许计数,低电平禁止计数,再次为高时,计数器从计数初值重新开始减法计数。 </L>

          <L L_ID="A42">方式5(硬件触发脉冲)</L>
          <L L_ID="A43">写入"方式控制字"和加载"计数初值"后,OUT变为高电平,直接由GATE的上升沿触发,在下 一个时钟CLK的下降沿开始减法计数,计数结束后OUT输出变为低电平,此后又变为高电平,即 在第N 1个CLK的周期上输出一个单时钟周期负脉冲,如下图:</L>
          <L L_ID="A44">GATE的上升沿作为触发,而低电平,高电平及下降沿对计数过程无影响。</L>
       </INITIAL>
       <APPLICATION>
          <L L_ID="A45">本例中利用8253的定时计数特性来控制扬声器的发声频率和发声长短,电路图如下:</L>
          <L L_ID="A46">OUT2发送600赫兹方波,定时长短由GATE2控制,滤波器前的与门由8255的PB1控制。PB0和PB1同时为高的时间来控制是发长音还是发短音。8253的地址为040H~043H。8255A的口地址为60H~63H。</L>
          <L L_ID="A47">程序如下:</L>
          <L L_ID="A48">SSP PROC NEAR</L>
          <L L_ID="A49">MOV AL,10110110B ;计数器2,初值为16位,方式3,二进制格式</L>
          <L L_ID="A50">OUT 43H,AL ;计数器2的方式控制寄存器地址</L>
          <L L_ID="A51">MOV AL,1983 ;1.19MHz/600Hz=1983,计数初值</L>
          <L L_ID="A52">OUT 42H,AL ;发送低字节</L>
          <L L_ID="A53">MOV AL,AH</L>
          <L L_ID="A54">OUT 42H,AL ;发送高字节</L>
          <L L_ID="A55">IN AL,61H ;读8255B口原输出值</L>
          <L L_ID="A56">MOV AH,AL ;输出值保存AH中</L>
          <L L_ID="A57">OR AL,03H ;使PB1 PB0均为1</L>
          <L L_ID="A58">OUT 61H,AL ;打开GATE2,输出方波</L>
          <L L_ID="A59">SUB CX,CX</L>
          <L L_ID="A60">L:LOOP L ;延时循环</L>
          <L L_ID="A61">DEC BL ;BL为子程序入口条件</L>
          <L L_ID="A62">JNZ L ;BL=6,发长声</L>
          <L L_ID="A63">BL=1,发短声</L>
          <L L_ID="A64">MOV AL,AH ;取回AH中的8255 B口的原输出值</L>
          <L L_ID="A65">OUT 61H,AL ;恢复8255 B口</L>
          <L L_ID="A66">RET ;返回</L>
          <L L_ID="A67">SSP ENDP</L></APPLICATION>
       </CHIP>
    </CHIP-LIST>


    请问对以上的XML文档的查询该如何做?谢谢

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/23 11:18:00
     
     613613 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究汇编)
      文章:33
      积分:203
      门派:XML.ORG.CN
      注册:2005/4/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给613613发送一个短消息 把613613加入好友 查看613613的个人资料 搜索613613在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看613613的博客7
    发贴心情 
    你们真强,我清不明白啊.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/23 21:39:00
     
     chencong7308570981 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:11
      积分:124
      门派:XML.ORG.CN
      注册:2005/4/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chencong7308570981发送一个短消息 把chencong7308570981加入好友 查看chencong7308570981的个人资料 搜索chencong7308570981在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chencong7308570981的博客8
    发贴心情 
    那些XML文档是微机接口的芯片说明,如8253,8259,我还没写完,用8253的内容代替了8259的内容,但格式都是一样。请各位大虾帮帮该怎么查询,像楼主那样查询,谢谢!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/25 10:13:00
     
     chencong7308570981 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:11
      积分:124
      门派:XML.ORG.CN
      注册:2005/4/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chencong7308570981发送一个短消息 把chencong7308570981加入好友 查看chencong7308570981的个人资料 搜索chencong7308570981在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看chencong7308570981的博客9
    发贴心情 
    有点不懂啊!把关键的地方给讲讲,加点注释
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/26 9:24:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/8/5 11:04:26

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    218.750ms