📄 delay subroutine.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 + -