完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define NOP() _nop_() //74HC595 IO ***it HC595_SI = P1^2; ***it HC595_RCK = P1^3; ***it HC595_SCK = P1^4; ***it HC595_OE = P0^0; //¿ØÖÆ595Ëø´æÆ÷ʹÄܶˣ¬´Ó¶øʵÏÖÄ¿±êÇ°½ø£¬µ«µÆ²»ÁÁµÄ״̬ void Delay1ms(void); void Delay_ms(unsigned int i); void HC595SendData(unsigned int Val); void Uart_Service(void); void Uartinit(void); unsigned int Fly_Val = 0xfffe; //595³õÖµ unsigned char Flag_Time0 = 1; //¶¨Ê±Æ÷0ÑÓʱµ½Î»ºó±êÖ¾±äÁ¿ unsigned char Blink_Times = 0; //ÉÁ˸´ÎÊý unsigned int Delay_Time = 0; //¶¨Ê±Æ÷0ÑÓʱÀÛ¼Ó±äÁ¿ unsigned int COM = 0; //Êý¾ÝºÏ³ÉÓñäÁ¿ unsigned char Uart_Command[7] = {0}; // unsigned char Uart_Long = 0; // void main() { UartInit(); HC595_OE = 0; HC595SendData(0x5555); Delay_ms(1000); HC595SendData(0xaaaa); while(1) { if(0 == Flag_Time0) { Flag_Time0 = 1; HC595SendData(Fly_Val); // Fly_Val = Fly_Val; // COM = COM*2+1; Fly_Val = (Fly_Val << 1) | (COM*2 + 1); } Uart_Service(); } } void Uart_Service(void) { if(Uart_Long == 7) { if((0xaa==Uart_Command[0])&&(0xf1==Uart_Command[1])&&(0xeb==Uart_Command[6])) { TR0 = 0; } if((0xaa==Uart_Command[0])&&(0xf2==Uart_Command[1])&&(0xeb==Uart_Command[6])) { TR0 = 1; } Uart_Long = 0; } } void Ser_int(void) interrupt 4 { ES = 0; if (RI) { RI = 0; //Çå³ýRIλ Uart_Command[Uart_Long++] = SBUF; SBUF = Uart_Command[Uart_Long-1]; while(TI==1) { TI = 0; } } ES = 1; } void Time0_int(void) interrupt 1 { TF0 = 0; TR0 = 0; Delay_Time ++; if(175 == Delay_Time) { Flag_Time0 = 0; Delay_Time = 0; Blink_Times ++; } if(Blink_Times == 16) { Blink_Times = 0; Fly_Val = 0xfffe; COM = 0; } TR0 = 1; } void Delay1ms() //@18.432MHz { unsigned char i, j; i = 18; j = 235; do { while (--j); } while (--i); } void Delay_ms(unsigned int i) { while(i--) { Delay1ms(); } } void HC595SendData(unsigned int Val) { unsigned char i; for(i=0;i<16;i++) { if((Val< else HC595_SI = 0; HC595_SCK=0; NOP(); NOP(); HC595_SCK= 1; } HC595_RCK = 0; NOP(); NOP(); HC595_RCK = 1; } void UartInit(void) //9600bps@18.432MHz { SCON = 0x50; //UART1:8λÊý¾Ý,¿É±ä²¨ÌØÂÊ AUXR |= 0x40; //¶¨Ê±Æ÷1ʱÖÓΪFosc,¼´1T AUXR &= 0xFE; //´®¿Ú1Ñ¡Ôñ¶¨Ê±Æ÷1Ϊ²¨ÌØÂÊ·¢ÉúÆ÷ TMOD &= 0x0F; //É趨¶¨Ê±Æ÷1Ϊ16λ×Ô¶¯ÖØ×°·½Ê½ TL1 = 0x20; //É趨¶¨Ê±³õÖµ TH1 = 0xFE; //É趨¶¨Ê±Æ÷ÖØ×°Öµ ET1 = 0; //½ûÖ¹¶¨Ê±Æ÷1ÖÐ¶Ï TR1 = 1; //Æô¶¯¶¨Ê±Æ÷1 S2CON = 0x50; //UART2:8λÊý¾Ý,¿É±ä²¨ÌØÂÊ AUXR |= 0x04; //¶¨Ê±Æ÷2ʱÖÓΪFosc,¼´1T T2L = 0x20; //É趨¶¨Ê±³õÖµ T2H = 0xFE; //É趨¶¨Ê±³õÖµ AUXR |= 0x10; //Æô¶¯¶¨Ê±Æ÷2 AUXR |= 0X80; //¶¨Ê±Æ÷0¹¤×÷ÔÚ1T TMOD &= 0XF0; //É趨¶¨Ê±Æ÷1Ϊ16λ×Ô¶¯ÖØ×°·½Ê½ TH0 = 0XF8; //¶¨Ê±100΢Ãë TL0 = 0XCD; //¶¨Ê±100΢Ãë ET1 = 1; TF0 = 0; //Çå³ýTF0±êÖ¾ TR0 = 1; IE = 0X82; //¿ªÆôÖÐ¶Ï EA = 1; ES = 1; } |
|
相关推荐
15个回答
|
|
AUXR |= 0X80; //¶¨Ê±Æ÷0¹¤×÷ÔÚ1T
TMOD &= 0XF0; //É趨¶¨Ê±Æ÷1Ϊ16λ×Ô¶¯ÖØ×°·½Ê½ TH0 = 0XF8; //¶¨Ê±100΢Ãë TL0 = 0XCD; //¶¨Ê±100΢Ãë ET1 = 1; TF0 = 0; //Çå³ýTF0±êÖ¾ TR0 = 1; 红色字体部分应该是ET0=1;吧
最佳答案
|
|
|
|
串口使用的定时器是不能再做其他用途使用的,如果还需要使用定时器,就需要开启其他的定时器
|
|
|
|
菜鸟想问一下,串口什么情况下要用定时器呢? |
|
|
|
只要使能串口就需要对应的定时器
|
|
|
|
串口1用的是定时器1,而我写的是定时器0,应该不冲突才对。 |
|
|
|
|
|
|
|
人中狼 发表于 2017-12-27 10:47 谢谢了,就是这个问题。 |
|
|
|
|
|
|
|
人中狼 发表于 2017-12-27 10:47 再请教一下,我在初始化里又加了定时器2,但是结果是直接串口1不工作了。 AUXR |= 0x04; //1T T2L = 0x00; //初值 T2H = 0xB8; // IE2 |= 0x04; //允许T2中断 AUXR |= 0x10; //启动T2 |
|
|
|
bobo2021 发表于 2017-12-31 20:19 void Time2_int (void) interrupt 12 { unsigned int i; AUXR &= 0xEF; //停止T2 Delay_Time2++; if(Delay_Time2==3000) { for(i=0;i<7;i++) { SendData(Uart1_Command); } } AUXR |= 0x10; //启动T2 IE2 &= 0xFB; //禁止T2中断 } |
|
|
|
你需要好好看看这款芯片的资料,没用过这个芯片,不过你们的程序里T2不象是当定时器用,似乎是做了串口2的定时器,程序里的注释看不到,所以应该是寄存器设置的问题
|
|
|
|
有时候这种细微的过程是很容易被人忽略的。
|
|
|
|
bobo2021 发表于 2017-12-31 20:19 我发现自已搞错了,STC15的串口2用的是T2做发生器,所以又用来做定时器,冲突了。多有打扰,抱欠。 |
|
|
|
波特率不是由波特率发生器产生的吗?不是直接选取时钟源吗?还是只有51单片机需要用定时器产生波特率? |
|
|
|
51单片机都是要用定时器的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11787 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 15:08 , Processed in 1.057560 second(s), Total 103, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号