⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pt2257.txt

📁 PT2257 PT2257 PT2257
💻 TXT
字号:
为何无人相助?下面的程序可以运转,但在音量加减时有杂音出现,还有音量加减时会突变。

不知何故?还请高人相助,谢谢!

SCL BIT P1.0
SDA BIT P1.1
DB1  EQU R1
DB10 EQU R2

ORG 0000H
MOV DB1, 00H
MOV DB10,00H
LJMP MAIN
MAIN:
     LJMP VOLINC
VOLINC:
     JB P3.0,VOLDEC; (判断音量+是否按下)
     ACALL VOL_DELAY20MS

     JB P3.0,VOLDEC
     MOV A,DB1;(将音量个位数放入寄存器A中)
     CJNE A,#0D,VOLINC1;(判断音量个位是否最大)
     MOV A,DB10;(将音量十位放入寄存器A中)
     CJNE A,#0D,VOLINC2;(判断音量十位是否最大)
     LJMP MAIN;(是最大就返回)
VOLINC1:
     DEC A;(音量个位减1)
     MOV DB1,A;(放入DB1中保存)
     ACALL VOL;(调用音量处理子程序)
     LJMP MAIN
VOLINC2:
      DEC A;(音量十位减1)
      MOV DB10,A;(放入DB10中保存)
      ACALL VOL;(调用音量处理程序)
      MOV DB1,#10D
      LJMP MAIN;(返回)
      RET


VOLDEC:
      JB P3.1,MAIN;(判断音量-是否按下)
      ACALL VOL_DELAY20MS
      JB P3.1,MAIN
      MOV A,DB1;(将音量个位数放入寄存器A中)
      CJNE A,#10D,VOLDEC1;(判断音量个位是否最小)
      MOV A,DB10;(将音量十位放入寄存器A中)
      CJNE A,#8D,VOLDEC2;(判断音量十位是否最小)
      LJMP MAIN
VOLDEC1:
      INC A;(音量个位加1)
      MOV DB1,A;(放入DB1中保存)
      ACALL VOL;(调用音量处理子程序)
      LJMP MAIN
VOLDEC2:
      INC A;(音量十位加1)
      MOV DB10,A;(放入DB10中保存)
      MOV DB1,#0D
      ACALL VOL;(调用音量处理程序)
      LJMP MAIN
      RET;(返回)

VOL:
     

      MOV R6,#88H;(将PT2257地址码放入R6中)
      NOP
      CLR SDA
      ACALL VOL_DELAY
      CLR SCL
      ACALL VOL_DELAY
      ACALL VOL_DATA

      MOV DPTR,#TAB1
      MOV A,DB10
      MOVC A,@A+DPTR
      MOV R6,A
      ACALL VOL_DATA

      MOV DPTR,#TAB2
      MOV A,DB1
      MOVC A,@A+DPTR
      MOV R6,A
      ACALL VOL_DATA

      SETB SCL
      ACALL VOL_DELAY
      ACALL VOL_DELAY20MS
      RET
VOL_DATA:
      MOV A,R6 
      MOV R5,#8
VOL_DATA1:
      RLC A
      MOV SDA,C
      ACALL VOL_DELAY
      SETB SCL
      ACALL VOL_DELAY
      CLR SCL
      ACALL VOL_DELAY
      DJNZ R5,VOL_DATA1
      SETB SCL
      ACALL VOL_DELAY
      CLR SCL
      RET

VOL_DELAY:
      MOV R7,#4
      DJNZ R7,$
      RET
VOL_DELAY20MS:
      MOV R1,#40
VOL_DELAY20MS1:
      MOV R2,#250
      DJNZ R2,$
      DJNZ R1,VOL_DELAY20MS1
      RET

TAB1:
      DB 11100000B,11100001B,11100010B,11100011B,11100100B
      DB 11100101B,11100110B,11100111B

TAB2:
      DB 11010000B,11010001B,11010010B,11010011B,11010100B
      DB 11010101B,11010110B,11010111B,11011000B,11011001B

      END  

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -