|
- #include<reg52.h>
- unsigned char code trdata[]={'f','r','e','e','d','o','m',0x0a,0x00};
- sbit P32=P3^2; //INT0的控制管腳
- unsigned char i,tmp;
- void delay1ms(unsigned int n) //1ms基準(zhǔn)延時(shí)
- {
- unsigned i;
- while(n--)
- for(i=0;i<115;i++);
- }
- void main()
- {
- TMOD=0x20; //定時(shí)器工作方式2, 8位自動(dòng)重裝
- TH1=TL1=0xfd; //產(chǎn)生9600的bps
- TR1=1; //啟動(dòng)T1
- EA=1; //開(kāi)放總中斷
- ES=1; //允許串口中斷
- EX0=1; //允許INT0中斷
- SCON=0x50; //串口工作方式1,允許接受數(shù)據(jù)
- PCON=0x00; // 不倍增bps
- while(1); //無(wú)限循環(huán)等待中斷
-
- }
- void int0() interrupt 0 //INT0的中斷編號(hào)
- {
- if(P32==0){
- delay1ms(20); //消陡
- if(P32==0){
- i=0;
- while(trdata[i]!=0x00){
- SBUF=trdata[i];
- while(!TI); //等待數(shù)據(jù)傳送,傳完一個(gè)字節(jié)后TI=1
- TI=0;
- i++;
- }
- while(!P32); //等待按鍵釋放
- }
- }
- }
- void send_char() interrupt 4 //串口中斷的編號(hào)
- {
- if(RI==1){ //收到1字節(jié)的數(shù)據(jù)時(shí),RI=1,申請(qǐng)串口中斷
- RI=0; //軟件清0
- tmp=SBUF;
- P0=tmp;
- SBUF=tmp; //向PC發(fā)送數(shù)據(jù)
- while(!TI); //等待發(fā)送
- TI=0; //清0
- }
- }
復(fù)制代碼
|
|