基于51单片机的方波发生器 四个频率由四个按键控制

2019-07-15 23:57发布

分别产生times New Roman">50302010Hz四种频率信号通过蜂鸣器的响声和继电器的通断速度来判断。四个按键分别对应一种频率,可互相切换。  p3.0-p3.3接按键,p2.0接蜂鸣器,p2.5接继电器
   我写的程序不能切换,只有一个频率10Hz,不知道哪有错误,大家帮忙指出错误改正一下吧。
     ORG  0000H
       LJMP  START
     ORG 0030H
  START:MOV A,#0FFH
        MOV P3,A
        MOV A,P3
        JNB ACC.0,KEY1
        JNB ACC.1,KEY2
        JNB ACC.2,KEY3
        JNB ACC.3,KEY4
        LJMP  START
     ORG 0060H
  KEY1:LJMP KET1
  KEY2:LJMP KET2
  KEY3:LJMP KET3
  KEY4:LJMP KET4
     ORG  0100H
  KET1:MOV TMOD,#01H
       MOV TH0,#0D8H
       MOV TL0,#0F0H
       SETB EA
       SETB ET0
       SETB TR0
  SELF1:AJMP SELF1
        LJMP START
     ORG  000BH
    LJMP KT1
     ORG  0150H
    KT1:MOV TH0,#0D8H
        MOV TL0,#0F0H
        CPL P2.0
        //CPL P2.5
     RETI
     ORG  0200H
   KET2:MOV TMOD,#01H
         MOV TH0,#0BEH
         MOV TL0,#0C4H
         SETB EA
         SETB ET0
         SETB TR0
  SELF2:AJMP SELF2
         LJMP START
     ORG  000BH
       LJMP KT2
      ORG  0250H
   KT2:MOV TH0,#0BEH
       MOV TL0,#0C4H
       CPL P2.0
       //CPL P2.5
     RETI
     ORG  0300H
  KET3:MOV TMOD,#01H
       MOV TH0,#9EH
       MOV TL0,#58H
       SETB EA
       SETB ET0
       SETB TR0
  SELF3:AJMP SELF3
       LJMP START
     ORG  000BH
       LJMP KT3
     ORG  0350H
  KT3:MOV TH0,#9EH
      MOV TL0,#58H
      CPL P2.0
      //CPL P2.5
     RETI
     ORG  0400H
  KET4:MOV TMOD,#01H
       MOV TH0,#3CH
       MOV TL0,#0B0H
       SETB EA
       SETB ET0
       SETB TR0
  SELF4:AJMP SELF4
        LJMP START
     ORG  000BH
       LJMP KT4
     ORG  0450H
  KT4:MOV TH0,#3CH
      MOV TL0,#0B0H
      CPL P2.0
      //CPL P2.5
     RETI
     END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
bjhanda@163.com
1楼-- · 2019-07-16 04:29
等高手。帮顶、
小浩神倾城
2楼-- · 2019-07-16 06:18
c语言的倒是可以帮你搞定 加Q1925276216详谈
Lennon_ele
3楼-- · 2019-07-16 11:10
 精彩回答 2  元偷偷看……
潜伏的鱼
4楼-- · 2019-07-16 14:34
我很久没碰汇编了,现在基本都是用C,硬着头皮帮你看了一下,修改的部分用红 {MOD}标识了,可能不全对,但希望对你有帮助。
//  我写的程序不能切换,只有一个频率10Hz,不知道哪有错误,大家帮忙指出错误改正一下吧。
     ORG  0000H
       LJMP  START
     ORG 0030H
  START:MOV A,#0FFH //
        MOV P3,A
        MOV A,P3
              MOV ACC,A   //加这一句试。
        JNB ACC.0,KEY1  //
        JNB ACC.1,KEY2
        JNB ACC.2,KEY3
        JNB ACC.3,KEY4
        LJMP  START
     ORG 0060H
  KEY1:LJMP KET1
  KEY2:LJMP KET2
  KEY3:LJMP KET3
  KEY4:LJMP KET4
     ORG  0100H
  KET1:MOV TMOD,#01H
       MOV TH0,#0D8H
       MOV TL0,#0F0H
       SETB EA
       SETB ET0
       SETB TR0
  SELF1:AJMP SELF1
        LJMP START
     ORG  000BH
    LJMP KT1
     ORG  0150H
    KT1:MOV TH0,#0D8H
        MOV TL0,#0F0H
        CPL P2.0
        //CPL P2.5
     RETI
     ORG  0200H
   KET2:MOV TMOD,#01H
         MOV TH0,#0BEH
         MOV TL0,#0C4H
         SETB EA
         SETB ET0
         SETB TR0
  SELF2:AJMP SELF2
         LJMP START
     ORG  000BH
       LJMP KT2
      ORG  0250H
   KT2:MOV TH0,#0BEH
       MOV TL0,#0C4H
       CPL P2.0
       //CPL P2.5
     RETI
     ORG  0300H
  KET3:MOV TMOD,#01H
       MOV TH0,#9EH
       MOV TL0,#58H
       SETB EA
       SETB ET0
       SETB TR0
  SELF3:AJMP SELF3
       LJMP START
     ORG  000BH
       LJMP KT3
     ORG  0350H
  KT3:MOV TH0,#9EH
      MOV TL0,#58H
      CPL P2.0
      //CPL P2.5
     RETI
     ORG  0400H
  KET4:MOV TMOD,#01H
       MOV TH0,#3CH
       MOV TL0,#0B0H
       SETB EA
       SETB ET0
       SETB TR0
  SELF4:AJMP SELF4
        LJMP START
     ORG  000BH
       LJMP KT4
     ORG  0450H
  KT4:MOV TH0,#3CH
      MOV TL0,#0B0H
      CPL P2.0
      //CPL P2.5
     RETI
     END

梦如
5楼-- · 2019-07-16 18:04
正好最近用汇编写了一个周期可以调节的方波产生程序,若是需要可以联系

一周热门 更多>