熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2024-5-26 17:09
正文摘要:本人小白一枚,如圖這個(gè)題請(qǐng)問流水閃爍各1s用定時(shí)器這一步和兩機(jī)串口通信怎么聯(lián)系到一塊,謝謝大佬,麻煩詳細(xì)點(diǎn)謝謝(求求詳細(xì)點(diǎn)代碼) |
想要看就干脆看個(gè)明白從非定時(shí)轉(zhuǎn)定時(shí)代碼基本一樣。 #include "reg52.h" unsigned char code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共陰0~F消隱減號(hào) sbit k1=P3^4; sbit k2=P3^5; sbit k3=P3^6; sbit k4=P3^7; bit k=0,kk=0; void CKF(unsigned char C) {//向串口發(fā)送數(shù)據(jù) SBUF=C; while(!TI); TI=0; } void CKS() interrupt 4 {//串口接收數(shù)據(jù) if(RI) { RI=0; if(SBUF=='S'){k=1;kk=0;} if(SBUF=='X'){k=0;kk=1;} if(SBUF=='L'){k=kk=0;} } } void CKSZ() { SCON=0X50;//串口模式1允許接收 TMOD=0X20;//T1工作模式2 PCON=0X00;//波特率不倍增 TH1=TL1=0XFD;//波特率9600 TI=RI=0; TR1=1; IE=0X90;//允許串口中斷 } void main() {//緣由https://ask.csdn.net/questions/8117223 unsigned char Xd=0,ls=0,ys=0,sy=0,sm=0; CKSZ(); while(1) { if(++ys==0) { if(++sy==0) { if(k) { if(ls)ls*=2;else ls=1; if(sm<9)++sm;else sm=0; } if(kk) { if(ls)ls/=2;else ls=128; if(sm)--sm;else sm=9; } if(k==kk)ls=k; } P1=ls;//流水燈 P2=smgduan[sm];//靜態(tài)數(shù)碼管 } if(!k1&&!++Xd) { CKF('S'); while(!k1); } if(!k2&&!++Xd) { CKF('X'); while(!k2); } if(!k3&&!++Xd) { CKF('L'); while(!k3); } } } https://blog.csdn.net/xianfajushi/article/details/139620581 |
void CKSZ() { SCON=0X50;//串口模式1允許接收 TMOD=0X21;//T1工作模式2 PCON=0X00;//波特率不倍增 TH1=TL1=0XFD;//波特率9600 TI=RI=0; TR1=1; IE=0X90;//允許串口中斷 TH0+=0Xdc;//定時(shí)器賦初值,定時(shí)10ms觸發(fā)中斷,自動(dòng)補(bǔ)償方式 TL0+=0X00; TR0=1; //啟動(dòng)定時(shí)器T0。 ET0=1; //開啟定時(shí)器 EA=1; //全局中斷開關(guān) } void ZhongDuan() interrupt 1 { ++Js; TH0+=0Xdc; TL0+=0X00; } ———————————————— 版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。 原文鏈接:https://blog.csdn.net/xianfajushi/article/details/139632525 |
jiesz185 發(fā)表于 2024-5-27 14:31 流水燈程序不要放在U1,U1只負(fù)責(zé)發(fā)送按鍵信息,流水燈程序由U2負(fù)責(zé)。 |
第一個(gè)ic發(fā)送控制信息 0x01 0x02 第二個(gè)ic收到后執(zhí)行 定時(shí)器里設(shè)定1秒標(biāo)志位 用for循環(huán) |
就兩個(gè)狀態(tài),用啥串口啊,兩個(gè)腳各自表示一個(gè)狀態(tài)就行了啊。把兩個(gè)按鍵傳遞到P30和P31就行了吧 |
![]() |
這是兩碼事。 兩機(jī)串行通訊,只要開啟雙方的串行中斷,通訊時(shí),約幾ms中斷一次,完成一個(gè)字節(jié)的交流。 流水閃爍中人用定時(shí)器,每間隔1S處理一下顯示就行了。 |
U1發(fā)送按鍵標(biāo)志碼,U2接收標(biāo)志碼,定時(shí)器+流水燈。各個(gè)擊破,難度不大。 |
用的Proteus仿真的 |
Powered by 單片機(jī)教程網(wǎng)