音量控制M62446的驱动C程序

更新时间:2023-05-17 14:57:05 阅读: 评论:0

音量控制M62446的驱动C程序
音量控制M62446 m62446 pdf
//-------------------------------------------------------------------------
// M62446 drving routines, VER 1.0
//
// COPYRIGHT (C) 2000, Enbia Technology Inc.
// Target: 8031
// AUTHOR: STEVEN LUO
//
// Revision History:
// 2001/1/5 - Original Version
//
//-------------------------------------------------------------------------
#include <reg51.h>
#include <types.h>
#include <intrins.h>
#include <bin.h>
extern BOOL PIN_M62446_LATCH;
extern BOOL PIN_M62446_DATA;
extern BOOL PIN_M62446_CLK;
static idata WORD shadow_word00=0;
static idata WORD shadow_word01=0;
static idata WORD shadow_word10=0;
static idata WORD shadow_word11=0; // for storing the control word status //
static BOOL bM62446Muted; // Set when 62446 is muted
static void Write_M62446_Word(WORD myword);
//-------------------------------------------------------------------------
// Name: Volume_Validate
// Description:
// Arguments:
/
/ Return value: none
//-------------------------------------------------------------------------
static BYTE Volume_Validate(char vol){
if(vol<0)vol=0; // negative, should be 0
el if(vol >80) vol=80; // >80, t to 80
return 80 - vol; // Down to Up
}
//-------------------------------------------------------------------------
// Name: Mute_M62446
// Description:
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Mute_M62446(void){
Write_M62446_Word(0xa141); // B1010000 1010000 01, B10100001_01000001
Write_M62446_Word(0xa142);
Write_M62446_Word(0xa143);
bM62446Muted = 1;
}
//-------------------------------------------------------------------------
// Name: UnMute_M62446
// Description:
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void UnMute_M62446(void){
shadow_word01&=0xfffc; shadow_word01|=0x01; Write_M62446_Word(shadow_word01);
万马齐喑究可哀shadow_word10&=0xfffc; shadow_word10|=0x02; Write_M62446_Word(shadow_word10);
shadow_word11&=0xfffc; shadow_word11|=0x03; Write_M62446_Word(shadow_word11);
bM62446Muted = 0;
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Left
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Left(char vol){
WORD temp;
temp=Volume_Validate(vol);
temp<<=9;
shadow_word01&=0x01ff;
shadow_word01|=temp;
// DE=0;DF=1;
shadow_word01&=0xfffc; shadow_word01|=0x01;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word01);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Right
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Right(char vol){
WORD temp;
temp=Volume_Validate(vol);
temp<<=2;
shadow_word01&=0xfe03;
shadow_word01|=temp;
// DE=0;DF=1;
shadow_word01&=0xfffc; shadow_word01|=0x01;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word01);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Center
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Center(char vol){
WORD temp;
temp=Volume_Validate(vol);
temp<<=9;
shadow_word10&=0x01ff;
shadow_word10|=temp;
// DE=1;DF=0;
shadow_word10&=0xfffc; shadow_word10|=0x02;
if (bM62446Muted) return;做红包手工
Write_M62446_Word(shadow_word10);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_SubWoofer
// Description: This function Write 2 bytes to M62446
中国科学院微电子研究所// Arguments:
// Return value: none
/
/-------------------------------------------------------------------------
void Write_M62446_SubWoofer(char vol){
WORD temp;
temp=Volume_Validate(vol);
temp<<=2;
shadow_word10&=0xfe03;
shadow_word10|=temp;
// DE=1;DF=0;
shadow_word10&=0xfffc; shadow_word10|=0x02;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word10);
}
煨汤的做法//-------------------------------------------------------------------------
// Name: Write_M62446_SurLeft
// Description: This function Write 2 bytes to M62446
/
/ Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_SurLeft(char vol){
萤火虫简介WORD temp;
temp=Volume_Validate(vol);
temp<<=9;
shadow_word11&=0x01ff;
shadow_word11|=temp;
// DE=1;DF=1;
shadow_word11&=0xfffc; shadow_word11|=0x03;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word11);
}
//-------------------------------------------------------------------------
/
/ Name: Write_M62446_SurRight
// Description: This function Write 2 bytes to M62446
// Arguments:
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_SurRight(char vol){
WORD temp;
temp=Volume_Validate(vol);
temp<<=2;
shadow_word11&=0xfe03;
shadow_word11|=temp;
// DE=1;DF=1;
shadow_word11&=0xfffc; shadow_word11|=0x03;
if (bM62446Muted) return;
Write_M62446_Word(shadow_word11);
}
static BYTE code Treble_Bass_TAB[11]={
0x0e, // 0, -10db
0x0c, // 1, -8db
0x0b, // 2, -6db
0x0a, // 3, -4db
0x09, // 4, -2db
0x00, // 5, 0db
0x01, // 6, +2db
硼酸杀蟑螂0x02, // 7, +4db
0x03, // 8, +6db
0x04, // 9, +8db
0x06 // 10, +10db
};
//-------------------------------------------------------------------------
/
/ Name: Write_M62446_Treble
旅游景点介绍// Description: This function Write 2 bytes to M62446
// Arguments: 0-20,
// 0: -10db
// 10: 0db
// 20 +10db
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Treble(BYTE Treble){
WORD temp;
Treble=Treble_Bass_TAB[Treble];
temp=Treble;
temp<<=12;
shadow_word00&=0x0fff;
shadow_word00|=temp;
/
/ DE=0;DF=0;
shadow_word00&=0xfffc;
Write_M62446_Word(shadow_word00);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Bass
// Description: This function Write 2 bytes to M62446
// Arguments: 0-20,
// 0: -10db
// 10: 0db
// 20 +10db
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Bass(BYTE Bass){
WORD temp;
Bass=Treble_Bass_TAB[Bass];
temp=Bass;
temp<<=4;
shadow_word00&=0xff0f;
shadow_word00|=temp;
// DE=0;DF=0;
shadow_word00&=0xfffc;
Write_M62446_Word(shadow_word00);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Bypass
// Description: This function Write 2 bytes to M62446
// Arguments: 1, bypass on, 0: off
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Bypass(BOOL bOnOff){
if (bOnOff) shadow_word00 |= 0x0004; // On
el shadow_word00 &= 0xfffb; // off
// DE=0;DF=0;
shadow_word00 &= 0xfffc;
Write_M62446_Word(shadow_word00);
}
//-------------------------------------------------------------------------
// Name: Write_M62446_Output
// Description: This function Write 2 bytes to M62446
// Arguments: port=1-4, BYTE=1 or 0
// Return value: none
//-------------------------------------------------------------------------
void Write_M62446_Output(BYTE port, BOOL bOnoff){
WORD temp, mask=1;
temp=bOnoff;
temp <<= (12-port);
mask <<= (12-port);
shadow_word00&=~mask;
shadow_word00|=temp;
// DE=0;DF=0;
shadow_word00&=0xfffc;
Write_M62446_Word(shadow_word00);
}
#define DELAY() {_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();
_nop_(); _nop_();}
//-------------------------------------------------------------------------
// Name: Write_M62446_Word
// Description: This function Write 2 bytes to M62446
/
/ Arguments:
// Return value: none
//-------------------------------------------------------------------------
static void Write_M62446_Word(WORD myword){
register BYTE i;
PIN_M62446_LATCH=0;
for (i=16;i>0;--i){
if(myword & 0x8000) PIN_M62446_DATA=1; // MSB first
el PIN_M62446_DATA=0;
水合离子myword<<=1; // Rotate Right
DELAY();
PIN_M62446_CLK=1;
DELAY();
PIN_M62446_CLK=0;
}
DELAY();
PIN_M62446_LATCH=1;
}

本文发布于:2023-05-17 14:57:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/908591.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图