完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
以上应该都没问题,每个片子都是这样的。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1691 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4753 浏览 0 评论
4238 浏览 9 评论
3830 浏览 16 评论
4406 浏览 1 评论
4221浏览 3评论
2389浏览 0评论
3404浏览 0评论
1170浏览 0评论
2854浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 11:14 , Processed in 0.800226 second(s), Total 78, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1096