⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delay subroutine.c

📁 本程序实现通过BDM方式访问MOTOROLA 9S12单片机EEPROM
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                    大连双马电子有限公司
**                                       研   发   部
**                                         研发一部 
**
**                                 http://www.smelecom.com/
**
** 文   件   名: Delay subroutine
** 编 写  日 期: 2006年3月24日
** 描        述: This programme is used for read and write the Motorola 32series MCU
** 版	     本: the first one 
** 编	     者: 宋晓伟
***********************************************************************************************************/



#include  <reg54.h>
//#include  <absacc.h>
//#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
sbit  qTXD=P1^3;
sbit  qRXD=P1^2;
//sbit  qTXD=P1^6;
//sbit flag=PSW^5;

/*********************************************************
* 函数原型: void delay1us(void);
* 功    能: 1us的基本延迟。
*********************************************************/
void delay1us(void) {
  #pragma asm
    nop
    nop
  #pragma endasm
}
 

/*******************************************************
*函数原型:void delay17us(void);
*功    能:17us的延迟,给模拟串口提供。
*******************************************************/
void delay17us(void) {
  int  n;
 #pragma asm
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
 #pragma endasm
  for(n=0;n<=5;n++) {
    delay1us();
    }
}


/*********************************************************
*函数原型:void delay10us(void);
*功    能:10us延迟。
**********************************************************/ 
void delay10us(void) {
  int  n;
  for (n=0;n<=3;n++) {
    delay1us();
     }
}
/*
void delay133us(void) {
  int  n;
  for (n=0;n<=62;n++) {
    delay1us();
     }
}



/*********************************************************
*函数原型:void delay104us(void);
*功    能:10us延迟。
********************************************************** 
void delay104us(void) {
  int  n;
  for (n=0;n<=49;n++) {
    delay1us();
     }
}

/*********************************************************
*函数原型:void delay35us(void);
*功    能:35us延迟。
**********************************************************
 
void delay80us(void) {
  int  n;
  for (n=0;n<=39;n++) {
    delay1us();
     }
}
 /*void delay7us(void) {
  int  n;
  for (n=0;n<=2;n++) {
    delay1us();
     }
}
 

 void delay3us(void) {
  int  n;
  for (n=0;n<=0;n++) {
    delay1us();
     }
}*/
/*********************************************************
*函数原型:void delay10ms(void);
*功    能:10ms延迟。
**********************************************************/ 
 
void delay10ms(void) {
  int  v;
  for (v=0;v<700;v++)
     {
      delay17us();
      }
}
 
void delay4ms(void) {
  int  v;
  for (v=0;v<300;v++)
     {
      delay17us();
      }
}  
void delay1ms(void) {
  int  v;
  for (v=0;v<60;v++)
     {
      delay17us();
      }
} 
 

 /*
void delay6ms(void) {
  int  v;
  for (v=0;v<455;v++)
     {
      delay17us();
      }
}
 
 
/*********************************************************
*函数原型:void delay40ms(void);
*功    能:40ms延迟。
**********************************************************/
 
void delay40ms(void) {
  int  v;
  for (v=0;v<1500;v++)
     {
      delay17us();
      }
}

/*********************************************************
*函数原型:void delay40ms(void);
*功    能:40ms延迟。
**********************************************************/ 
 
void delay200ms(void) {
  int  v;
  for (v=0;v<13000;v++)
     {
      delay17us();
      }
}
  
void delay100ms(void) {
  int  v;
  for (v=0;v<6400;v++)
     {
      delay17us();
      }
}
/*********************************************************
*函数原型:void delay207ms(void);
*功    能:207ms延迟。
********************************************************** 
void delay207ms(void) {
  int  v;
  for (v=0;v<13550;v++)
     {
      delay17us();
      }
}

/*********************************************************
*函数原型:void delay60ms(void);
*功    能:60ms延迟。
**********************************************************  
void delay60ms(void) {
  int  v;
  for (v=0;v<3750;v++)
     {
      delay17us();
      }
}

/*********************************************************
*函数原型:void delay107ms(void);
*功    能:107ms延迟。
********************************************************** 
 
void delay107ms(void) {
  int  v;
  for (v=0;v<7000;v++)
     {
      delay17us();
      }
}

/*********************************************************
*函数原型:uchar input(void);
*功    能:模拟串口输入函数,输入一个字节。
**********************************************************/
uchar input(void) {
  int  m;
  uchar in_data;
  in_data=0x00;
  
  while(qRXD);
  delay10us();
  delay17us();
  for(m=0;m<7;m++)
	{
    //qrTXD=1;
	if(qRXD==1){
      in_data|=0x80;
      }
    else {
      in_data&=0x7f;
      }
    in_data>>=1;
    delay17us();
   }
	if(qRXD==1){
      in_data|=0x80;
      }
    else {
      in_data&=0x7f;
      }
	delay17us();
    delay1us();
    delay1us();
	delay1us();
	delay1us();
    return(in_data);
 }







/*********************************************************
*函数原型:void output(uchar sda);
*功    能:模拟串口输出函数,输出一个字节。
**********************************************************/
void output(uchar sda) {
  int  m;
  m=0;
  qTXD=0;
  delay17us();
  while(m<8)
  {if (sda&1){
    qTXD=1;
     }
   else {
    qTXD=0;
        }
    delay17us();
    m=m+1;
    sda>>=1;
   }
   qTXD=1;
   delay17us();
} 
/*
void outputt(uchar sda) {
  int  m;
  m=0;
  qrTXD=0;
  delay17us();
  while(m<8)
  {if (sda&1){
    qrTXD=1;
     }
   else {
    qrTXD=0;
        }
    delay17us();
    m=m+1;
    sda>>=1;
   }
   qrTXD=1;
   delay17us();

}*/ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -