實驗目的:掌握兩個單片機之間串口通信的工作原理 實驗內容:將甲單片機按鍵按下的次數通過串口發送給乙單片機,并控制乙的LED流水燈顯示的效果(按下幾次就產生幾個LED的流水顯示效果,假定不超過8個LED);同時,按下乙單片機的按鍵,也通過串口控制甲單片機的數碼管(顯示乙按鍵按下的次數) 實驗代碼: - #include<reg51.h>
- sbit P3_3=P3^3;
- sbit P3_4=P3^4;
- void delay(){
- unsigned int i;
- for(i=0;i<=35000;i++);
- }
- void delay1(){
- unsigned int i;
- for(i=0;i<=30000;i++);
- }
- void delay2(){
- unsigned int i;
- for(i=0;i<=5000;i++);
- }
- int main(){
- EA=1;
- EX0=1;//允許外部中斷申請中斷
- IT0=1;//下降沿觸發方式
- EX1=1;
- IT1=1;
- IP=0x04;
- while(1){
- P1=0xc0;//1100 0000
- delay2();
- P1=0xff;
- delay2();
- }
- }
- void int0(void) interrupt 0 using 0{ //外部中斷0
- char a[9]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
- int x;
- for(x=0;x<9;x++){
- P1=a[x];
- delay();
- }
- }
- void int1(void) interrupt 2 using 2{ //外部中斷1
- int i,l,j;
- char o[7]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf};
- P1=0xff;
- delay1();
- for(j=1;j<=3;j++){
- for(l=0;l<7;l++){
- P1=o[l];
- delay1();
- }
- for(i=6;i>=0;i--){
- P1=o[i];
- delay1();
- }
- }
- }
復制代碼
|