📄 模拟中断fa.c
字号:
#include<STC12C5410AD.H>
sbit clk=P1^2; //时钟线
sbit BT_SND=P1^0;//发送线
int b,z,d;
unsigned char a,c;
#define F_TM F0
sbit ACC0= ACC^0;
sbit ACC1= ACC^1;
sbit ACC2= ACC^2;
sbit ACC3= ACC^3;
sbit ACC4= ACC^4;
sbit ACC5= ACC^5;
sbit ACC6= ACC^6;
sbit ACC7= ACC^7;
/******************进入定时器0********************/
void IntTimer0() interrupt 1
{
clk=0;
F_TM=1;
}
/***************定时器0初始化***************/
void init()
{
//TMOD=0x02;
TH0=(256-10);
TL0=TH0;
EA=1;
ET0=1;
}
/***********串口通讯设置**************/
void cksz()
{
//PCON=0x80;//设置波特率为19200 若想变成9600删除此行即可
AUXR=0x20;
TMOD=0x22; //波特率设置
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;//工作方式设置
SM0=0;
SM1=1;
EA=1; //开启中断
ES=1;
}
/**************发送**********************/
void sed(unsigned char inch)
{
ACC=inch;
clk=1;
F_TM=0;
BT_SND=0; //start bit
TR0=1; //启动
while(!F_TM);
BT_SND=ACC0; //先送出低位
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC1;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC2;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC3;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC4;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC5;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC6;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=ACC7;
clk=1;
F_TM=0;
while(!F_TM);
BT_SND=1;
clk=1;
F_TM=0;
while(!F_TM);
TR0=0; //停止timer
clk=1;
}
/********************主函数**************/
void main()
{
init();
cksz();
z=0;
b=0;
while(1)
{
if(b==1)
{ b=0;
sed(a);
}
}
}
void time4() interrupt 4
{
RI=0;
a=SBUF;
if(a=='~')
{
z=1;
}
if(z==1)
{
b=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -