{
a[sc]=SBUF; RI=0; sc++; } }
void main() {
uchar i=0;
TMOD=0x20; /*设置定时器T1为方式2*/ TH1=TL1=0xfd; /*波特率9600*/
SCON=0x50; /*串口方式1,允许接收*/ TR1=1; /*启动T1*/
ES=EA=1; /*允许串行口中断*/ P1_0=0; //数码管位选信号 while(1)
{if(sc>=16) //接收到16个数后,循环显示 {
for(i=0;i<16;i++) //循环16次,依次显示a[0]-a[15] {
P0= TABLE[a[i]]; Delay(500); } } } }
//发生外部中断0(下降沿触发)时,单片机从串行口输出字符串\; //发生外部中断1(下降沿触发)时,单片机从串行口输出字符串\。
#include
char sa[]=\
void INT0_srv(void) interrupt 0 //INT0中断号为0 { char i;
for(i=0;i<5;i++) //循环5次,依次发送各字符 {
SBUF=sa[i]; /*数据送串行口发送缓冲器*/ while(TI==0); /*如果TI=0,未发送完,循环等待*/ TI=0; /*已发送完,再把TI清0*/ } }
void INT1_srv(void) interrupt 2 //INT1中断号为2 { char i;
for(i=0;i<5;i++) //循环5次,依次发送各字符 {
SBUF=sb[i]; /*数据送串行口发送缓冲器*/ while(TI==0); /*如果TI=0,未发送完,循环等待*/ TI=0; /*已发送完,再把TI清0*/ } }
void main() {
TMOD=0x20; /*设置定时器T1为方式2*/ TH1=TL1=0xfd; /*波特率9600*/
SCON=0x40; /*串口方式1只发送,不接收*/ TR1=1; /*启动T1*/
IT0=IT1=1; //INT0,INT1下降沿触发 EX0=EX1=EA=1; //允许INT0,INT1中断 while(1); }
MCS-51单片机实验源程序



