/*****************************************
******************************************/
#include<msp430x16x.h>
#include"MSP430_7219.H"
void WriteMax7221(unsigned char add,unsigned char dat)
{
unsigned char ASD,i,j,k;
MAX7221DIR |=0xE0;
CS_L;
i=0;
while(i<16)
{
if(i<8){ASD=add;} //小于8的时候取地址
else {ASD=dat;} //大于8的时候取数据
for(j=8;j>=1;j--)
{
if(ASD&0x80)
{
DIN_H;
}
else
{
DIN_L;
}
ASD=ASD<<1;
CLK_H;
for(k=10;k>0;k--);
CLK_L;
}
i=i+8;
}
CS_H;
}
void InitialMax7221(void)
{
WriteMax7221(0x0A,0x02); //亮度地址0AH,0x00~0x0F,0x0F最亮
WriteMax7221(0x0B,0x07); //扫描LED个数地址0BH,0x00~0x07,最多扫描8个数码管
WriteMax7221(0x0C,0x01); //工作模式地址0x0C. 0x00:ShutDown;0x01:Normal
WriteMax7221(0x09,0xFF); //编码模式地址0x09. 0x00~0xFF:哪一位为1,哪一位就支持编码
WriteMax7221(0x0F,0x00); //Code B decode for digits XXXXXXX0
}
void Max7219_Write_Led(unsigned char *p) //8位数码管程序*P为数据入口
{
unsigned char i;
for(i=1;i<=8;i++)
{
WriteMax7221(i,p[i-1]);
}
}