求单片机高手

在内部存储器中20H-2FH单元中有16个数据,要求采用方式1串行发送出去,传输速率为600波特,设晶振为12MHZ,取SMOD为,采用中断方式,用C语言或者汇编编写发送程序

第1个回答  2011-08-29
我好像是有现成的程序。我这里的是:将片内RAM的30H~3FH单元的16字节数据发送出去。串行口设定为方式1,单片机系统时钟频率为11.0592MHz,波特率为2400bps。
程序如下:
TRT: MOV SCON,#40H ;
MOV PCON,#00H ;
MOV R0,#30H
MOV R7,#10H ;数据长度10H
LOOP:MOV A,@R0 ;取数据送A
MOV C,PSW.0;
MOV TB8,C
MOV SBUF,A ;数据送SBUF,启动发送
WAIT:JBC TI,CONT ;判断发送结束否
SJMP WAIT
CONT:INC R0
DJNZ R7,LOOP
RET
你自己再修改一下吧。希望对你有用。
第2个回答  2011-08-29
;Target : STC12C5A60S2
;Crystal: 6Mhz
void init_uart1(void)
{
AUXR |=0x15; //用独立波特率发生器,串口波特率是原来的12倍
SCON =0x50; //SCON:serail mode 1, 8-bit UART, 无奇偶校验
BRT=0xF6; //Baud:19200 fosc=6.013645MHz 错误率:2.12%
PS=1; //设置串口为最高优先级
ES=1; //允许串口1中断
}
void send_char_com1(uchar ch)
{
P1|=0x02; //RS485总线拉高,准备发送数据
delay(500); //延迟XX秒
ES=0; //关闭串口1接收
SBUF=ch; //发送数据
while(TI==0); //等待串口1数据发送完毕
TI=0; //发送完毕标志清零
ES=1; //允许串口1接收
P1&=0xfd; //RS485总线置高,允许接收数据
}本回答被提问者采纳
第3个回答  2011-08-29
毕业设计吧?
第4个回答  2011-08-29
????????????????????????????????????????????
相似回答