熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-3-4 22:24
正文摘要:用Keil uVision5編寫(xiě)的C語(yǔ)言代碼如下畫(huà)的原件圖在附件里 不懂哪里有問(wèn)題 #include<regx51.h> #define uchar unsigned char #define uint unsigned int uint code ... |
運(yùn)行了之后什么樣,亮都不亮嗎 |
/* Main.c file generated by New Project wizard * * Created: 周四 3月 5 2020 * Processor: AT89C52 * Compiler: Keil for 8051 */ #include <reg51.h> #include <stdio.h> //#include<regx51.h> #define uchar unsigned char #define uint unsigned int uint code unm[]={0,1,3,5,7,9,15,60,100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500}; uchar unm1[]={0xff,0xef,0xc7,0xab,0xef,0xef,0xef,0xff}; sbit buzz=P1^7; //定義單片機(jī)I/O口 P1.7的偽名稱(chēng)叫buzz uchar m,n,j,y; uint l,g; void delay(uint i) { uchar j; while(i--) for(j=0;j<120;j++); } void init() { TMOD = 0x11; TH0 = 0x00; TL0 = 0x00; TH1 = 0xaa; TL1 = 0xbb; EA = 1; ET0 = 1; ET1 = 1; TR0 = 1; TR1 = 1; } bit ce_anjian ( ) { bit key=0; P1=0xf3; if(P1!=0xf3) key=1; else key=0; return(key); } void ce_jianzhi ( ) { uchar i,j,p; do { while(ce_anjian()==0); delay(50); }while(ce_anjian()==0); for(i=0;i<2;i++) { P1=(0xfe<<i)|i; for(j=0;j<2;j++) { p=P1&0x0c; if(p==0x08>>j) { y=i*2+j+1; goto D1; } } } D1: delay(50); do { while(ce_anjian()==1); delay(50); }while(ce_anjian()==1); } void mingjiao() { uchar t; for(t=0;t<50;t++) { buzz=0; //P1_7被替換 } buzz=1; //P1_7被替換 } void main() { init(); n=5; while(1) { l=unm[n]; if(ce_anjian()==1) { ce_jianzhi(); switch(y) { case 1: {m=1;j=0x7f;mingjiao();}break; case 2: {m=2;j=0xfe;mingjiao();}break; case 3: {n=n+1;if(n==24)n=23;mingjiao();}break; case 4: {n=n-1;if(n==0)n=1;mingjiao();}break; default: break; } } } } void t_1()interrupt 3 { uchar a,k; TH1 = 0xaa; TL1 = 0xbb; switch(m) { case 1: { a=0x01; for(k=0;k<8;k++) { P2=a; P3=unm1[k]; delay(2); a=a<<1; if(a==0)a=0x01; P0=j; } }break; case 2: { a=0x80; for(k=0;k<8;k++) { P2=a; P3=unm1[k]; delay(2); a=a>>1; if(a==0)a=0x80; P0=j; } } } } void t_0()interrupt 1 { uchar b1,b2,b3,b4,b5,b6,b7,b8; if(++g<l) return; g=0; switch(m) { case 1:{ j=(j>>1)|0x80; if(j==0xff)j=0x7f;}break; case 2:{ j=(j<<1)|0x01; if(j==0xff)j=0xfe;}break; } b1=unm1[0]; b2=unm1[1]; b3=unm1[2]; b4=unm1[3]; b5=unm1[4]; b6=unm1[5]; b7=unm1[6]; b8=unm1[7]; unm1[0]=b2; unm1[1]=b3; unm1[2]=b4; unm1[3]=b5; unm1[4]=b6; unm1[5]=b7; unm1[6]=b8; unm1[7]=b1; } |
p1_7替換為BUZZ 可以運(yùn)行 ![]() ![]() |
bit ce_anjian ( ) { bit key=0; P1=0xf3; if(P1!=0xf3) key=1; else key=0; return(key); } 沒(méi)太仔細(xì)看,你這段有錯(cuò)誤,每次調(diào)用函數(shù)返回結(jié)果key始終是0,且P1被賦值0xf3; 每次進(jìn)入按鍵函數(shù),key被定義為0,P1被賦值0xf3; if選擇函數(shù)表達(dá)式結(jié)果均為0,即key=0,函數(shù)返回0 |
Powered by 單片機(jī)教程網(wǎng)