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

📄 byteone.c

📁 本程序实现通过BDM方式访问MOTOROLA 9S12单片机EEPROM
💻 C
字号:
#include <reg54.h>
#include <series sub.h>
#include <intrins.h>
#include <delay subroutine.h>

#define uchar unsigned char
#define uint unsigned int

//sbit CTRLDIR =   P3^3;
//sbit CTRL    =   P3^4;

sbit BDR=P1^5;
sbit BDT=P3^5;
sbit RST=P1^7;
/*
void delay(long delaytime)
{
	while(--delaytime) 
		{
		_nop_();
		}
}
*/
void TrBit0(uchar bit0_vh,bit0_vl)
{
//	int bdmcycle;
	BDT=0;
	while(--bit0_vh)
	{
	_nop_();
	}
	
//	for(bdmcycle=0;bdmcycle<bit0_vh;bdmcycle++)
//	{	
//		_nop_();	
//	}	
//	Timer_Delay(bit0_vh,bit0_vl);
	BDT=1;//sbi(PORTD,PD2);
	while(--bit0_vl)
	{
	_nop_();
	}

//	for(bdmcycle=0;bdmcycle<bit0_vl;bdmcycle++)
//	{	
//		_nop_();	
//	}
//	Timer_Delay(0x3f,0x01);	
}

void TrBit1(uchar bit0_vh,bit0_vl)
{		
//	int bdmcycle;
	BDT=0;
	while(--bit0_vh)
	{
	
	}
	_nop_();
//	for(bdmcycle=0;bdmcycle<bit0_vh;bdmcycle++)
//	{	
//		_nop_();	
//	}	
//	Timer_Delay(bit0_vh,bit0_vl);
	BDT=1;//sbi(PORTD,PD2);
	while(--bit0_vl)
	{
	_nop_();
	}

//	for(bdmcycle=0;bdmcycle<bit0_vl;bdmcycle++)
//	{	
//		_nop_();	
//	}
//	Timer_Delay(0x3f,0x01);		 
}

void Trbyte(uint tdata,uchar byte_v1,byte_v0)
{
	int p;
	byte_v0=byte_v1*2;
	for(p=0;p<8;p++)
		{
		if(tdata&0x80)
			{
			TrBit1(byte_v1,byte_v1);
			}
		else
			{
			TrBit0(byte_v0,byte_v1);
			}	
		tdata<<=1;	 
		}
}

 
uchar RecByte(uchar byte_r)
{
	int q;
	uchar bdmcycle;
	uchar rdata=0;
	for(q=0;q<8;q++)
	{
		bdmcycle=byte_r;
		BDT=0;//cbi(PORTD,PD2);
		while(--bdmcycle)
		{
		//_nop_();
		}	
			
		BDT=1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		_nop_();

		if(BDR==1)
			{
			rdata|=(1<<0);
			}
		else
			{			
			rdata&=~(1<<0);
			}
	 	if(q!=7)
			{rdata<<=1;}
	//	BDR=1;
		BDT=1;//sbi(PORTD,PD2);
		bdmcycle=byte_r;
		while(--bdmcycle)
		{
		//_nop_();
		}
	}
	return(rdata);	
}


⌨️ 快捷键说明

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