final.c

来自「用单片机控制电话报警的简单程序 在keil7.0编写」· C语言 代码 · 共 56 行

C
56
字号
#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 + =
减小字号Ctrl + -
显示快捷键?