//PSD913F2 DS80c320接口程序 #include <REG320.H> #include <ABSACC.H> #include <INTRINS.H> #define uchar unsigned char #define unint unsigned int //#################################################
//################################################# #define CSIOPBASE 0x0200 //PSD特殊寄存器初始化 #define CTLA XBYTE[CSIOPBASE+0x0002] #define DIRA XBYTE[CSIOPBASE+0x0006] #define OUTA XBYTE[CSIOPBASE+0x0004] #define INA XBYTE[CSIOPBASE+0x0000] #define CTLB XBYTE[CSIOPBASE+0x0003] #define DIRB XBYTE[CSIOPBASE+0x0007] #define OUTB XBYTE[CSIOPBASE+0x0005] #define INB XBYTE[CSIOPBASE+0x0001] #define DIRC XBYTE[CSIOPBASE+0x0014] #define OUTC XBYTE[CSIOPBASE+0x0012] #define INC XBYTE[CSIOPBASE+0x0010] #define DIRD XBYTE[CSIOPBASE+0x0015] #define OUTD XBYTE[CSIOPBASE+0x0013] #define IND XBYTE[CSIOPBASE+0x0011] #define RAMSTART XBYTE[0x2000] #define CSLCD XBYTE[0x030f] //################################################# sbit LS_SDA=P1^7; //定义74LS164接口引脚 sbit LS_SCK=P1^3; //#################################################
//################################################# #include <delay.c> //#################################################
//*******************************串行口0初始化、发送接收子程序 void Comstart0(void) // { // TMOD=0X20; T2CON=0x30; //Baud=19200; Fosc=11059200 RCAP2H=0xff;RCAP2L=0xee; //(RCAP2H,RCAP2L)=65536- (Fosc/32/Baud) SCON0=0x40;PCON=0x00;TR2=1; //方式1,波特率不加倍,计数器开 IE=0x00;} //中断总允许,允许串行中断 //************************************************* void Txd2a(uchar z) //串口发送子程序 { SBUF0=z; while(TI==0); TI=0; }//为0等待 //************************************************* void Pc_com0(unint a){ unint m,n; uchar w; m=a/10000;w=(uchar)(m+0x0030);Txd2a(w); //万位 m=a%10000;n=m/1000;w=(uchar)(n+0x0030);Txd2a(w); //千位 n=m%1000;m=n/100;w=(uchar)(m+0x0030);Txd2a(w); //百位 m=n%100;n=m/10;w=(uchar)(n+0x0030);Txd2a(w); //十位 n=m%10;w=(uchar)(n+0x0030);Txd2a(w);Txd2a(0x0d);Txd2a(0x0a);}//个位 回车 //*************************************************
//************************************************* 串行口初始化、发送接收子程 序 void Comstart1(void) { T2MOD=0X20; TH1=0xfd;TL1=0xfd; //256-11059200/384/9600=0xfd SCON1=0x40;PCON=0x00;TR1=1; //方式1,波特率不加倍,计数器开 IE=0x00;} //中断总允许,允许串行中断 //************************************************* void Txd2b(uchar z) //串口发送子程序 { SBUF1=z; while(TI1==0); TI1=0; }//为0等待 //************************************************* void Pc_com1(unint a){ unint m,n; uchar w; m=a/10000;w=(uchar)(m+0x0030);Txd2b(w); //万位 m=a%10000;n=m/1000;w=(uchar)(n+0x0030);Txd2b(w); //千位 n=m%1000;m=n/100;w=(uchar)(m+0x0030);Txd2b(w); //百位 m=n%100;n=m/10;w=(uchar)(n+0x0030);Txd2b(w); //十位 n=m%10;w=(uchar)(n+0x0030);Txd2b(w);Txd2b(0x0d);Txd2b(0x0a);}//个位 回车 //*************************************************
//************************************************* main() { uchar a;unint m; Comstart0(); Comstart1(); //***************************************** CTLA=0x00;DIRA=0xff; //PSD端口初始化 CTLB=0x00;DIRB=0xff; DIRC=0xff;DIRD=0x06; OUTC=0x00;Delayl(0xff);OUTC=0xff;Delayl(0xff); //***************************************** Pc_com0(12345); Pc_com1(54321); OUTC=0x00;Delayl(0xaf); OUTC=0xff;Delayl(0xaf); //PCB板上的LED闪烁 //***************************************** while(1) { a=0x00; for(m=0;m<0xffff;m++) { Pc_com0(m); Pc_com1(0xffff-m); OUTC=a; a=~a; Delayl(0x7f);Delays(0xaf); } } }
(文章推荐人:电池)
|