亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mcutest.c

?? IC卡的單片機程序proteus仿真
?? C
字號:
#include "reg52.h"
#include "lcd.h"

unsigned char Rec_Buffer[4];
#define DELAY_IIC_TIME 60 
#define TRUE 1
#define FALSE 0

sbit SCL=P1^0;	//時鐘線
sbit SDA=P1^1;	  //數據線

unsigned int money;

bit err_flag;


//PC發送的命令
#define CardID_Addr 	0x00	//卡號 地址	  00~02
#define Password_Addr   0x0a	//密碼	  	   0a~0d
#define Money_Addr 	    0x0f	//金額		   0f~10

#define COM_RD_CARD 0x45   //上位機發的讀卡命令
#define COM_WR_CARD 0x67	//上位機發的寫卡命令
#define COM_ADD_MONEY 0xab	//上位機發的充錢命令
#define COM_DEC_MONEY 0x89	//上位機發的扣錢命令

#define COM_WR_ERROR  0xdd	//出錯

#define FLAG_RD_OK	0x12		//上傳的數據,表示讀卡完畢
#define FLAG_WR_OK	0x34 		//上傳的數據,表示寫卡完畢
#define FLAG_RD_ER	0x56		//上傳的數據,表示讀卡錯誤
#define FLAG_WR_ER	0x78		//上傳的數據,表示寫卡錯誤
#define FLAG_NO_MONEY 0x9a	 	//卡上金額不足
#define FLAG_FULL_MONEY 0xbc	//卡上金額過多

#define adr_mon_h 0x0f 	//錢的高位地址
#define adr_mon_l 0x10

unsigned char Card_num[]={"ID:          "};
unsigned char Money_num[]={"MONEY:    .  "};

bit Check_Acknowledge(void);
void I2C_Start(void);
void I2C_Stop(void);
unsigned char Read_One_Byte(unsigned char);
unsigned char  ReadI2CByte(void);
void Send_0(void);
void Send_1(void);
void WriteI2CByte(unsigned char) ;
void Write_One_Byte(unsigned char,unsigned char);

/********** Function Definition 函數定義 ************/
void DELAY_IIC(unsigned int t)
{
	while(t!=0)
	t--;
}


void I2C_Start(void)
{
	SDA=1;
	SCL=1;
	DELAY_IIC(DELAY_IIC_TIME);
	SDA=0;
	DELAY_IIC(DELAY_IIC_TIME);
	SCL=0;
	DELAY_IIC(DELAY_IIC_TIME);
}


void I2C_Stop(void)

{
	SDA=0;
	SCL=1;
	DELAY_IIC(DELAY_IIC_TIME);
	SDA=1;
	DELAY_IIC(DELAY_IIC_TIME);
	SCL=0;
	DELAY_IIC(DELAY_IIC_TIME);
}


void Send_0(void)
{
	SDA=0;
	SCL=1;
	DELAY_IIC(DELAY_IIC_TIME);
	SCL=0;
	DELAY_IIC(DELAY_IIC_TIME);
}

void Send_1(void)
{
	SDA=1;
	SCL=1;
	DELAY_IIC(DELAY_IIC_TIME);
	SCL=0;
	DELAY_IIC(DELAY_IIC_TIME);
}


bit Check_Acknowledge(void)
{
	SDA=1;
	SCL=1;
	DELAY_IIC(DELAY_IIC_TIME/2);
	F0=SDA;
	DELAY_IIC(DELAY_IIC_TIME/2);
	SCL=0;
	DELAY_IIC(DELAY_IIC_TIME);
	if(F0==1)
		return FALSE;
	return TRUE;
}

void WriteI2CByte(unsigned char b)
{
	char i;
	for(i=0;i<8;i++)
		if((b<<i)&0x80)
			Send_1();
	else   	
		Send_0();
}

unsigned char ReadI2CByte(void)
{
	unsigned char b=0,i;
	for(i=0;i<8;i++)
	{
		SDA=1; 
		SCL=1; 
		DELAY_IIC(10);
		F0=SDA;
		DELAY_IIC(10);
		SCL=0;
		if(F0==1)
		{
			b=b<<1;
			b=b|0x01;
		}
		else
			b=b<<1;
	}
	return b;
}

/**********以下為讀寫24c02的函數**********/
void Write_One_Byte(unsigned char addr,unsigned char thedata)
{
	bit acktemp=1;
	I2C_Start();
	WriteI2CByte(0xa0);
	acktemp=Check_Acknowledge();
	WriteI2CByte(addr);
	acktemp=Check_Acknowledge();
	WriteI2CByte(thedata);
	acktemp=Check_Acknowledge();
	I2C_Stop();
}	

unsigned char Read_One_Byte(unsigned char addr) 
{ 
	bit acktemp=1;
	unsigned char mydata;
	I2C_Start();
	WriteI2CByte(0xa0);
	acktemp=Check_Acknowledge();
	WriteI2CByte(addr);
	acktemp=Check_Acknowledge();
	I2C_Start();
	WriteI2CByte(0xa1);
	acktemp=Check_Acknowledge();
	mydata=ReadI2CByte();
	acktemp=Check_Acknowledge();
	return mydata;
	I2C_Stop();
}

char Num2Char(unsigned char ch)
{
	if(ch<=9)
 		return (ch+'0');
 	else return (ch-10+'a');
}

void System_Init(void)
{
	TMOD=0x21;		//串行口初始化
 	TH1=0xfd;TL1=0xfd;	//設定波特率  9600  
 	PCON=0x00;
 	TR1=1;			//啟動T1
 	SCON=0x50;	//串行口工作在方式1,并允許接收	
  	EA=1;	 	   	
	ES=1;	
}

void main(void)
{
	System_Init();	 	//初始化
	LCD_Init();

 	while(1)
	{
	//////////////此代碼用來測試IIC讀寫/////////////////
#ifdef _IIC_DUBG		 
		 Write_One_Byte(0,2); //ADD0 寫入數據2
		 Write_One_Byte(1,7); //ADD1 寫入數據3
		 LCD_Wr_Char(0,0,Read_One_Byte(0)+'0');	 //讀取24C02 并在LM016顯示
		 LCD_Wr_Char(1,0,Read_One_Byte(1)+'0');		 
#endif		 
	//////////////////IIC測試結束//////////////////////////
	  	Money_num[6]=((money/10000)%10)+'0';
	  	Money_num[7]=((money/1000)%10)+'0';
	  	Money_num[8]=((money/100)%10)+'0';
	  	Money_num[9]=((money/10)%10)+'0';
	  	Money_num[11]=(money%10)+'0';

		LCD_Wr_String(0,0,Card_num);
		LCD_Wr_String(0,1,Money_num);
	}

}

//IC卡讀和寫子程序,中斷	
void rxdata(void) interrupt 4 using 0
{
	unsigned char i,j;
	unsigned char rdbuf[20]; //讀取卡中的數據緩沖
	unsigned char RxBuf[20];  //讀取串口數據緩沖
	EA=0;
	for(i=0;i<2;i++) ////讀取命令,第一個字節為命令字節,第二個字節為在第二個字節之后還有多少個字節	   
	{
		while(!RI);
		RI=0;
		RxBuf[i]=SBUF;  
	}

	if(RxBuf[1]!=0)	  //如果字節數不是0,則繼續讀取剩余的數據
	{
		for(i=0;i<RxBuf[1];i++)
		{
			while(!RI);
			RI=0;
			RxBuf[2+i]=SBUF; 
		}
	}

	if(RxBuf[0]==COM_RD_CARD) //讀卡命令
	{
		err_flag=0;
		rdbuf[0]=Read_One_Byte(CardID_Addr);   //讀卡中的ID號
		rdbuf[1]=Read_One_Byte(CardID_Addr+1);
		rdbuf[2]=Read_One_Byte(CardID_Addr+2);
		rdbuf[3]=Read_One_Byte(CardID_Addr+3);
		rdbuf[4]=Read_One_Byte(CardID_Addr+4);

		rdbuf[5]=Read_One_Byte(Money_Addr);
		rdbuf[6]=Read_One_Byte(Money_Addr+1);

		SBUF= COM_RD_CARD; //發送讀卡命令返回PC

		while(!TI);
		TI=0;

		for(j=0;j<7;j++) //發送卡數據返回PC
		{
			SBUF=rdbuf[j];
			while(!TI);
			TI=0;
		}

    	  Card_num[3]=(rdbuf[0]>>4) +'0';	  
		  Card_num[4]=(rdbuf[0]&0x0f) +'0';  
		  Card_num[5]=(rdbuf[1]>>4) + '0';
		  Card_num[6]=(rdbuf[1]&0x0f) + '0';
		  Card_num[7]=(rdbuf[2]>>4) + '0';
		  Card_num[8]=(rdbuf[2]&0x0f) + '0';
		  Card_num[9]=(rdbuf[3]>>4) + '0';
		  Card_num[10]=(rdbuf[3]&0x0f) + '0';
		  Card_num[11]=(rdbuf[4]>>4) + '0';
		  Card_num[12]=(rdbuf[4]&0x0f) + '0';
			
		  money=rdbuf[5]*256+rdbuf[6];

	}
	else if(RxBuf[0]==COM_WR_CARD) //寫卡命令
	{
		err_flag=0;
		Write_One_Byte(CardID_Addr,RxBuf[2]); //寫卡號
		Write_One_Byte(CardID_Addr+1,RxBuf[3]);
		Write_One_Byte(CardID_Addr+2,RxBuf[4]);
		Write_One_Byte(CardID_Addr+3,RxBuf[5]);
		Write_One_Byte(CardID_Addr+4,RxBuf[6]);

		Write_One_Byte(Money_Addr,RxBuf[7]);
		Write_One_Byte(Money_Addr+1,RxBuf[8]);
		SBUF=COM_WR_CARD;while(!TI);TI=0;
		SBUF=COM_WR_CARD;while(!TI);TI=0;
		SBUF=COM_WR_CARD;while(!TI);TI=0;
		/*if((Read_One_Byte(CardID_Addr)!=RxBuf[2])
		 ||(Read_One_Byte(CardID_Addr+1)!=RxBuf[3])
		 ||(Read_One_Byte(CardID_Addr+2)!=RxBuf[4])
		 ||(Read_One_Byte(CardID_Addr+3)!=RxBuf[5])
		 ||(Read_One_Byte(CardID_Addr+4)!=RxBuf[6]))
		 err_flag=1;

		if(!err_flag)
		{
			SBUF=COM_WR_CARD;while(!TI);TI=0;
			SBUF=COM_WR_CARD;while(!TI);TI=0;
			SBUF=COM_WR_CARD;while(!TI);TI=0;
			SBUF=COM_WR_CARD;while(!TI);TI=0;
		}
		else
		{
			SBUF=COM_WR_ERROR;
			while(!TI);
			TI=0;
		} */
	}
	else if(RxBuf[0]==COM_ADD_MONEY) //充錢命令
	{
		err_flag=0;
		money=Read_One_Byte(Money_Addr)*256+Read_One_Byte(Money_Addr+1);
		money += (RxBuf[7]*256 + RxBuf[8]);

	 	if( Read_One_Byte(Money_Addr)!=(money/256)
		 || Read_One_Byte(Money_Addr+1)!=(money%256))
	 		err_flag=1;

	 	if(!err_flag)
	 	{
			SBUF=COM_ADD_MONEY;
			while(!TI);
			TI=0;
	 	}else 
	 	{
	 		SBUF=COM_WR_ERROR;
			while(!TI);
			TI=0;
	 	} 
	}
	else if(RxBuf[0]==COM_DEC_MONEY)
	{
			 err_flag=0;
			 money=Read_One_Byte(Money_Addr)*256+Read_One_Byte(Money_Addr+1);
			 money -= (RxBuf[7]*256 + RxBuf[8]); 

			 Write_One_Byte(Money_Addr,money/256);
			 Write_One_Byte(Money_Addr+1,money%256);	  

			 if( Read_One_Byte(Money_Addr)!=(money/256)
				 || Read_One_Byte(Money_Addr+1)!=(money%256))
			 err_flag=1;

			 if(!err_flag)
			 {
				SBUF=COM_DEC_MONEY;
				while(!TI);
				TI=0;
			 }else 
			 {
			 	SBUF=COM_WR_ERROR;
				while(!TI);
				TI=0;
			 } 		
	}
	EA=1;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91高潮流白浆在线麻豆| 免费在线欧美视频| 国产亚洲综合性久久久影院| 欧美在线你懂的| 在线看一区二区| 欧美性生活久久| 色久优优欧美色久优优| av电影天堂一区二区在线观看| 国产美女精品人人做人人爽| 蜜臀久久99精品久久久画质超高清 | 三级欧美在线一区| 亚洲丰满少妇videoshd| 日韩成人一区二区| 久久精品国产亚洲高清剧情介绍 | 欧洲精品中文字幕| 在线观看成人免费视频| 欧美丝袜第三区| 欧美一级在线观看| 亚洲精品在线三区| 国产精品久久久久久久久搜平片 | 日本va欧美va欧美va精品| 日本免费新一区视频| 精品一区二区三区的国产在线播放| 九色porny丨国产精品| 国产成人免费视频精品含羞草妖精 | 欧美日韩一区二区三区免费看| 欧美日韩dvd在线观看| 日韩精品中午字幕| 国产精品视频线看| 亚洲va韩国va欧美va| 久久超碰97人人做人人爱| jizz一区二区| 欧美一区二区三区四区在线观看| 精品不卡在线视频| 综合久久综合久久| 免费观看在线综合色| 成人一区二区三区在线观看| 在线免费观看日韩欧美| 亚洲精品一区二区三区福利 | 亚洲一区二区三区四区不卡| 毛片基地黄久久久久久天堂| caoporm超碰国产精品| 欧美一区二区三区四区久久| 久久久国产精品麻豆| 亚洲成av人片在www色猫咪| 国产精品自拍av| 91精品一区二区三区在线观看| 中文字幕成人在线观看| 日日夜夜精品视频天天综合网| 国产白丝精品91爽爽久久 | 日韩电影在线一区| 99久久精品免费看国产免费软件| 91精品国产色综合久久ai换脸 | 一区二区在线观看免费视频播放| 六月丁香婷婷色狠狠久久| 在线精品亚洲一区二区不卡| 国产三级一区二区三区| 日韩电影在线免费看| 91国产免费看| 国产精品久久久久久久久久免费看| 青青草91视频| 欧美日韩亚洲综合在线 | 美腿丝袜亚洲色图| 欧美日韩国产免费一区二区| 中文字幕亚洲精品在线观看| 国产不卡视频在线观看| www久久精品| 久久疯狂做爰流白浆xx| 日韩欧美一区二区不卡| 日韩精品电影一区亚洲| 欧美日韩一区二区不卡| 一级特黄大欧美久久久| 91毛片在线观看| 亚洲免费在线看| 色素色在线综合| 亚洲精品国产a久久久久久| 成人黄色777网| 中文字幕在线一区免费| www.欧美色图| 日韩毛片在线免费观看| 97精品国产97久久久久久久久久久久| 欧美国产国产综合| 成人理论电影网| 最新不卡av在线| 日本精品免费观看高清观看| 中文字幕一区二区三区不卡在线| 国产91丝袜在线18| 国产欧美日韩亚州综合| 高清免费成人av| 亚洲三级在线播放| 欧美日韩视频在线第一区| 午夜视频久久久久久| 3d成人h动漫网站入口| 日本午夜精品一区二区三区电影| 欧美一区二区播放| 国内外成人在线| 亚洲国产精品成人综合色在线婷婷| 国产精品亚洲综合一区在线观看| 亚洲国产精品v| 日本韩国视频一区二区| 日韩高清欧美激情| 久久久精品一品道一区| 91视频免费看| 日本欧美久久久久免费播放网| 精品99一区二区| av电影一区二区| 日本欧美一区二区在线观看| 久久久综合精品| 91成人在线观看喷潮| 美女在线一区二区| 国产精品理论片| 制服丝袜激情欧洲亚洲| 国产精品996| 亚洲成人自拍偷拍| 久久精品夜色噜噜亚洲a∨| 91免费观看视频在线| 日本美女一区二区三区视频| 国产精品毛片无遮挡高清| 欧美日韩在线不卡| 成人性生交大合| 欧美aⅴ一区二区三区视频| 国产日本欧美一区二区| 欧美精品一级二级| 99久久精品免费看| 国内精品第一页| 午夜国产精品影院在线观看| 国产亚洲女人久久久久毛片| 欧美亚洲精品一区| 波多野结衣在线一区| 精品国产青草久久久久福利| 在线观看日韩毛片| 国产一区二区三区不卡在线观看| 亚洲另类中文字| 2020国产精品自拍| 欧美三级电影网站| 99久久精品情趣| 国产真实乱子伦精品视频| 亚洲成a人片综合在线| 国产喷白浆一区二区三区| 制服丝袜亚洲精品中文字幕| 91视频国产资源| 粉嫩av一区二区三区在线播放 | 日本精品免费观看高清观看| 国产精品一二三在| 精品一区二区三区蜜桃| 视频一区中文字幕国产| 亚洲国产视频a| 亚洲精品国产第一综合99久久 | 91麻豆精品国产| 欧美亚洲高清一区二区三区不卡| eeuss国产一区二区三区| 国产精品一卡二卡| 成人高清视频在线| 国产成人在线网站| 国产成人综合在线观看| 国产综合色产在线精品| 精品夜夜嗨av一区二区三区| 免费高清不卡av| 免费观看一级特黄欧美大片| 日韩va亚洲va欧美va久久| 亚洲午夜久久久久久久久久久| 亚洲欧洲中文日韩久久av乱码| 国产精品乱人伦中文| 国产精品网曝门| 亚洲欧洲日韩女同| 亚洲精品美腿丝袜| 亚洲最快最全在线视频| 一区二区三区四区不卡视频| 亚洲综合免费观看高清完整版| 亚洲精品成人在线| 五月婷婷激情综合网| 日本欧美韩国一区三区| 国产真实乱对白精彩久久| 国产精品亚洲第一区在线暖暖韩国| 国产九色sp调教91| 成人综合婷婷国产精品久久免费| 成人激情小说网站| 欧美亚洲国产怡红院影院| 欧美一区二区视频网站| 久久精品视频在线免费观看| 综合欧美一区二区三区| 无码av中文一区二区三区桃花岛| 麻豆国产精品官网| 不卡av在线网| 欧美男男青年gay1069videost | 亚洲欧洲综合另类| 水蜜桃久久夜色精品一区的特点| 美国十次了思思久久精品导航| 成人午夜激情视频| 欧美精品v国产精品v日韩精品| 久久免费看少妇高潮| 一区二区三区精品在线| 韩国午夜理伦三级不卡影院| av毛片久久久久**hd| 在线不卡a资源高清| 国产精品无码永久免费888| 天天色综合天天| 97久久人人超碰| 精品欧美一区二区三区精品久久| 亚洲视频狠狠干|