背景知识
### 文件下载 51单片机特殊功能寄存器与串行通讯文件下载
代码示例
串口输出转lcd显示,中断方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int
uchar code sendBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar flag=0;
void delay(uchar);
void main(){ EA=1; ES=1; SCON=0x00; SBUF=sendBuf[flag]; for(;;); }
void sint() interrupt 4{ delay(500); SBUF=sendBuf[flag]; flag++; if(flag==10){ flag=0; } TI=0; }
void delay(uchar ms){ uchar i; while(ms){ for(i=0;i<123;i++); ms--; } }
|
读取按键转lcd字符显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int
uchar flag=0; uchar code sendBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit P1_0=P1^0; sbit P1_1=P1^1; uchar r;
void delay(uchar);
void main(){ SCON=0x10; EA=1; P2=sendBuf[flag]; while(1){ if(P1_0==0){ ES=1; }else{ ES=0; flag=1; } } }
void sint() interrupt 4{ P1_1=0; delay(1); P1_1=1; r=SBUF;
if(r!=0xff){ switch(r){ case 0xfe:flag=0;break; case 0xfd:flag=1;break; case 0xfb:flag=2;break; case 0xf7:flag=3;break; case 0xef:flag=4;break; case 0xdf:flag=5;break; case 0xbf:flag=6;break; case 0x7f:flag=7;break; }
} P2=sendBuf[flag]; RI=0; }
void delay(uchar ms){ uchar i; while(ms){ for(i=0;i<123;i++); ms--; } }
|