完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我产品上的程序,一直收不到数据,我从网上随便下了几个例程,也是不行,请问大家是为什么?我用的是串口助手,可以发送数据,就是接收进不了中断。例程如下。#include "c8051f020.h"
unsigned char data1; void SYSCLK_Init(); void PORT_Init(); void UART0_Init(); void SYSCLK_Init() { unsigned int i; OSCXCN=0X67; //0X67=0110,0111 for(i=0;i<256;i++); //等待>1ms while(!(OSCXCN&0X80)); //等待XTLVLD变为1 OSCICN=0X88; //时钟失效监测器,选择外部时钟源作为系统时钟 } void PORT_Init() { XBR0 = 0x27;/*交叉开关配置,URAT总线TX0置到P0.0口,RX0置到P0.1口, SPI总线SCK配置到P0.2口, MOSI为P0.4口, NSS为P0.5,MISO配置到P0.3口,IIC总线SDA置到P0.6口?SCK置到P0.7 TX1,RX1配置到P1.0,P1.1, CEX0,CEX1,配置到P1.2,P1.3,外部中断int0配置到P1.4 */ XBR1 = 0x04; XBR2 = 0x44; /*允许功能选择开关有效*/ P0MDOUT = 0x1A;/*SCK、MOSI和NSS为推拉式输出,MISO为开漏式.*/ P74OUT =0xff; } void UART0_Init() { SCON0=0x50; //串口方式1 TMOD=0X20; //选用定时器1作为波特率发生器 TH1=0xF4; //波特率为4800 TL1=0xF4; ES0=1; //开启串口中断0 TF1=0; TR1=1; //定时器启动 PCON=0X80; //波特率加倍 波特率为9600 ti0=1; } void UART0_ISR() interrupt 4 using 1 { if(RI0) { RI0=0;//中断接收标志清零 data1=SBUF0;//接收数据 SBUF0=data1;//发送数据 while(TI0==0); TI0=0;//发送标志清零 } } main() { WDTCN=0XDE; WDTCN=0XAD; SYSCLK_Init(); PORT_Init(); UART0_Init(); EA=1; while(1) { SBUF0=0X32;//发送数据 while(TI0==0); TI0=0;//发送标志清零 } } |
|
相关推荐
1个回答
|
|
以上应该都没问题,每个片子都是这样的。
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4084 浏览 18 评论
1168浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 13:36 , Processed in 1.261964 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号