📄 final.c
字号:
#include<stdio.h>
#include<c8051f020.h>
sbit tel_switch=P0^3;/*tel_switch是电话的总开关*/
sbit tel_dail=P0^2;/*tel_dail是电话的重播按键控制端*/
void initial(void);/*tel_swtich,tel_dail,以及中断控制寄存器和中断标志寄存器的初始化*/
void delay(void);/*延时程序,大约延时0.6s左右,因为暂时不知道系统时钟*/
void dail(void);/*拨号程序,实质是控制重播的完成*/
void main()
{
initial();
while(1)/*等待外部中断0,来自p3_2口*/
{;}
}
void initial()
{
tel_switch=0;/*电话机的总开关关闭*/
printf("initial:tel_switch is closed\n");/*无用*/
tel_dail=0;/*重播功能未接通*/
printf("initial:tel_dail is colsed\n");/*无用*/
IE=0x81;/*开启所有中断,开启外部中断0*/
TCON=0x01;/*外部中断0为脉冲中断,由高变低*/
}
void extern0_isr() interrupt 0
{
tel_switch=1;/*打开电话总的开关*/
delay();/*延时一段时间*/
dail();/*拨打电话*/
}
void delay()/*延时程序,大约为0.6s左右*/
{
unsigned char i,j;
i=1000;
while(i--)
{
for(j=0;j<600;j++){;}
}
}
void dail()
{
tel_dail=1;/*开启重播*/
printf("tel_dail is opened!\n");/*无用*/
delay();/*延时一段时间*/
tel_dail=0;/*停止重播*/
printf("tel_switch is closed!\n");
TMOD=0x01;/*计数器1的工作方式为1,16位计数*/
TH0=0;/*高8位为0*/
TL0=0;/*低8位为0*/
TR0=1;/*开启计数*/
for(;;)
{
if(TF0)/*计数溢出*/
{
tel_switch=0;printf("tel_switch is closed!\n");/*关闭整个电话的总开关*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -