📄 nw8980.c
字号:
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define MSG 0x58
#define CMH 0x18
#define CML 0x10
#define X_W 0x20
#define X_R 0x60
sbit p32 = P3^2;
sbit p33 = P3^3;
sbit p27 = P2^7;
#define DS8980 p33
#define CS8980 p27
#define DTA p32
void w8980_ctl(uchar data_w);
void w8980_mem(uchar channel, uchar data_w);
void r8980_dat(uchar hwi, uchar channel);
void message(uchar hwo, uchar channel, uchar msg_val);
void delayxs(uchar time);
void main(void)
{
/* while(1){
message(5,6,0xaa);
delayxs(5);
message(5,7,0x55);
delayxs(5);
message(5,8,0xaa);
delayxs(5);
message(5,9,0x55);
delayxs(5);
message(5,6,0x55);
delayxs(5);
message(5,7,0xaa);
delayxs(5);
message(5,8,0x55);
delayxs(5);
message(5,9,0xaa);
delayxs(5);
}
*/
r8980_dat(5, 9) ;
}
void w8980_ctl(uchar data_w)
{
DS8980 = 0;
P2 = 0x00;
P1 = data_w;
DS8980 = 1;
while(DTA == 1);
DS8980 = 0;
CS8980 = 1;
}
void w8980_mem(uchar channel, uchar data_w)
{
DS8980 = 0;
P2 = X_W | channel;
P1 = data_w;
DS8980 = 1;
while(DTA == 1);
DS8980 = 0;
CS8980 =1;
}
void r8980_dat(uchar hwi, uchar channel)
{
uchar temp;
w8980_ctl(0x85);
DS8980 = 0;
P2 = X_R | channel;
DS8980 = 1;
temp = P1;
while(DTA == 1);
DS8980 = 0;
CS8980 =1;
}
void message(uchar hwo, uchar channel, uchar msg_val)
{
w8980_ctl(MSG+hwo);
w8980_mem(channel, 0x05);
w8980_ctl(0x55);
w8980_mem(channel, msg_val);
}
void delayxs(uchar time)
{
uchar i,j, k;
for(i=0;i<time;i++)
for(j=0;j<0xff;j++)
for(k=0;k<0xff;k++)
_nop_();
_nop_();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -