📄 psd913f2 ds80c320.txt
字号:
用【 小 | 中 | 大 】字体浏览
C51编程:请问谁能给我一个双串口应用的C51例程 [desertzhao] [14次] 01-12-28 下午 12:11:28
我准备用DALLAS的DS80C320,谁有这类双串口的C51例程呀? [desertzhao] [9次] 01-12-28 下午 12:44:29
请看我很早前编的一个测试程序: [cmosttl] [38次] 01-12-28 下午 12:57:16
//PSD913F2 DS80c320接口程序 2000.7.20
#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);
}
}
}
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2002
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -