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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mmcfmt.c

?? AVR MMC 開鎖源碼。Multi-Media Card Unlocker
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/*** MMC Unlocker *************************************************************
 *
 *	File Name  : mmcfmt.c
 *	Title      : Multi-Media Card Unlocker
 *  Description: Reset locked MMC cards (and wipes all data) allowing them
 *                to be used again
 *	Author     : Muhammad J. A. Galadima
 *	Created    : 2004 / 01 / 27
 *	Version    : 0.1
 *	Target MCU : STK500 (can be used w/any AVRs with enough pins for
                 the MMC card (4) plus any switches/LEDs you want)
 *	
 *	
 *	This program is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU General Public License
 *	as published by the Free Software Foundation; either version 2
 *	of the License, or (at your option) any later version.
 *	
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *****************************************************************************/

#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/pgmspace.h>

#include <ctype.h>
#include <inttypes.h>
#include <string.h>


#define MMC_PORT	PORTC
#define MMC_PIN		PINC
#define MMC_DDR		DDRC
#define MMC_CS      PC0
#define MMC_MISO    PC2
#define MMC_MOSI    PC1
#define MMC_CLK     PC6

#define LED_PORT	PORTB
#define LED_PIN		PINB
#define LED_DDR		DDRB
#define SW_PORT		PORTA
#define SW_PIN		PINA
#define SW_DDR		DDRA
#define BAUDRATE	115200
#define BAUD_REG	((uint16_t)((F_CPU / (16.0 * (BAUDRATE))) + 0.5) - 1)	// if above .5 mark, round up; replace 16 with 8 for double
#define BAUD_H  	((uint8_t)(0xFF&(BAUD_REG>>8)))
#define BAUD_L		((uint8_t)(0xFF&BAUD_REG))

#define spi_response()	spi_byte(0xFF)					// read response
#define spi_busywait()	while(spi_byte(0xFF) == 0)		// wait for non-zero response to continue



uint8_t spi_cmd[5];	// 6 is CRC, which we won't be using here (or should be generated indide spi_command())
uint8_t reg_csd[16];
uint8_t reg_cid[16];
uint16_t block_len;
uint32_t block_cnt;


/*** SIG_UART_RECV ************************************************************
 *	interrupt on receive byte; for now just echo if any char received
 *****************************************************************************/
SIGNAL (SIG_UART_RECV) {
	uint8_t temp;
	temp = UDR;			// read
	LED_PORT = ~temp;	// show the current command on the LEDs
	if(temp=='\r' || temp == '\n') {
		printf_P(PSTR("\n\r"));
	}
	else
		UDR = temp;			// write	(just echo what the user types)
}

uint8_t uart_tx(uint8_t uart_tx) {
	while(!(UCSRA & _BV(UDRE)));		// wait for empty tx buffer
	UDR = uart_tx;						// put data in buffer, init send
	
	return 0;
}
// uint8_t uart_tx(uint8_t uart_tx)


uint8_t uart_rx(void) {
	while(!(UCSRA & _BV(RXC)));		// wait for full rx buffer
	return UDR;                   /* return the new c */
}
// uint8_t uart_rx(void)


/*** delay ********************************************************************
 *	rough delay; 65k loops, 4 instr each, +over head: 65536*4 = 262144, 
 *	round up tp 300000 clks (time: 300000/F_CPU seconds)
 *****************************************************************************/
void delay(void) {
	uint8_t i, j;
	for(i=0; i<255; i++) {
		for(j=0; j<255; j++) {
			asm volatile("nop"::);
			asm volatile("nop"::);
			asm volatile("nop"::);
			asm volatile("nop"::);
		}
	}
}
// void delay(void)

/*** show_resp ****************************************************************
 *	show value in response on LEDs and wait for keypress; for debugging only
 *****************************************************************************/
void show_resp(uint8_t retval) {
	LED_PORT = ~(retval);				// light leds 0-7 according to error,
										//	and show that system is waiting (led7)
	loop_until_bit_is_clear(SW_PIN, 0);	// wait for sw0 to be pressed
	delay();							// debounce delay
	loop_until_bit_is_set(SW_PIN, 0);	// wait for sw0 to be released
	delay();							// debounce delay
	LED_PORT = 0xFF;					// clear all leds
}
// void show_resp(uint8_t retval)

/*** spi_byte *****************************************************************
 *	Send one, receive one (happens simultaneously)
 *****************************************************************************/
uint8_t spi_byte(uint8_t spi_tx) {
	uint8_t i, spi_rx = 0;
	
	for(i=8; i>0; i--) {
	    i--;
		
		if( bit_is_set(spi_tx,i) )
		    MMC_PORT |= _BV(MMC_MOSI);  // set mosi pin
		else
		    MMC_PORT &= ~_BV(MMC_MOSI);  // clr mosi pin

		// read MISO
	    spi_rx <<= 1;		// x2, shift left to create space for next
		if( bit_is_set(MMC_PIN,MMC_MISO) )
			spi_rx++;

		MMC_PORT |= _BV(MMC_CLK);	// clk high
	    MMC_PORT &= ~_BV(MMC_CLK);	// clk low
 		
	    i++;
    }
	
	return spi_rx;
}
// uint8_t spi_byte(uint8_t spi_tx)


/*** spi_command **************************************************************
 *	Send contents of command structure, get (first) response byte
 *****************************************************************************/
uint8_t spi_command(void) {
	uint8_t retval, i;
	
	MMC_PORT &= ~_BV(MMC_CS);	// cs low (select, spi mode)
	
	spi_byte(0xFF);
	// send command struct
	spi_byte(spi_cmd[0] | 0x40);	// make 2 MSBs '01' (01xxxxxx, where x represents command bit)
	spi_byte(spi_cmd[4]);			// address
	spi_byte(spi_cmd[3]);			//    "
	spi_byte(spi_cmd[2]);			//    "
	spi_byte(spi_cmd[1]);			//    "
	spi_byte(0x95);					// CRC (from spec; calculate?)
//	spi_byte(0xFF);
	
	i=0;
	do {							// Flush Ncr (1-8 bytes) before response
		retval = spi_byte(0xff);
		i++;
	} while(i<8 && retval == 0xFF);
	
	return retval;	// return R1 response (or first byte of any other command)
}
// uint8_t spi_command(void)


/*** get_slice ****************************************************************
 *	get the requested portion of the given register
 *****************************************************************************/
uint16_t get_slice(uint8_t *ptr_reg, uint8_t start, uint8_t stop) {
	uint8_t upper, lower, lower_s, count, i;
	uint32_t rval=0;
	
	lower = stop / 8.0;
	upper = start / 8.0;
	
	// merge all used bytes into on large var
	count = upper - lower;
	for(i=0; i<=count; i++) {
		rval <<= 8;
		rval |= ptr_reg[upper-i];
	}
	
	// shift data down so it starts at zero
	lower_s = stop - (lower * 8);
	rval >>= lower_s;
	
	// clear upper bits (all bits before start)
	start -= stop;
	start++;
	//for(i=start; i<32; i++)
	for(i=start; i<16; i++)	// clear bits 15-start
		rval &= ~(1<<i);
	rval &= 0x0000FFFF;			// clear bits 31-16
	
	return (uint16_t)rval;
}
// uint16_t get_slice(uint8_t ptr_reg[], uint8_t start, uint8_t stop)

/*** get_regs *****************************************************************
 *	read the contents of the CSD + CID registers from the card
 *****************************************************************************/
void get_regs(void) {
	uint8_t i, c_size_mult, read_bl_len;
	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产欧美亚州国产日韩mv天天看完整| 欧美亚洲一区二区在线观看| 日韩一级片网站| 三级影片在线观看欧美日韩一区二区| 色综合天天综合网天天看片| 亚洲精品乱码久久久久久久久| 色呦呦一区二区三区| 国产精品不卡在线| 欧洲国内综合视频| 久久精品国产一区二区| 中文字幕电影一区| 久久免费的精品国产v∧| 成人免费看黄yyy456| 亚洲免费在线观看视频| 欧美另类一区二区三区| 国产精品香蕉一区二区三区| 亚洲视频在线一区观看| 欧美老肥妇做.爰bbww视频| 韩国成人在线视频| 亚洲卡通动漫在线| 日韩视频永久免费| 99久久精品免费看| 美国十次综合导航| 亚洲青青青在线视频| 欧美一级黄色片| 成人av网站在线观看| 亚洲成人av免费| 国产亚洲一区二区三区在线观看| 一本大道综合伊人精品热热| 免费的成人av| 伊人婷婷欧美激情| 精品国产一区二区三区四区四| 9久草视频在线视频精品| 青青青伊人色综合久久| 国产精品成人免费精品自在线观看| 欧美日韩精品免费| www.一区二区| 蜜桃在线一区二区三区| 亚洲三级在线看| 久久久久国产成人精品亚洲午夜| 欧美主播一区二区三区美女| 国产一区在线精品| 日本女优在线视频一区二区| 国产精品高潮久久久久无| 日韩欧美在线综合网| 在线观看91视频| aaa国产一区| 国产精品1区2区3区| 视频一区在线播放| 一区二区三区四区亚洲| 国产精品色在线观看| 日韩免费高清视频| 欧美日韩精品欧美日韩精品一| av亚洲精华国产精华| 国产99精品在线观看| 日韩在线a电影| 一级日本不卡的影视| 国产精品不卡一区二区三区| 国产亚洲一区字幕| 亚洲精品一区二区三区福利| 在线电影院国产精品| 欧洲精品视频在线观看| 91年精品国产| 99精品视频一区二区| 福利视频网站一区二区三区| 国产精品亚洲视频| 国产精品一区二区黑丝| 国产在线视频一区二区三区| 裸体歌舞表演一区二区| 蜜臀久久99精品久久久画质超高清| 国产一区二区三区在线看麻豆| 人禽交欧美网站| 免费的成人av| 久久成人18免费观看| 日本不卡123| 美女视频黄 久久| 久久国产精品无码网站| 精品一区二区免费| 国产呦萝稀缺另类资源| 国产91富婆露脸刺激对白| 国产suv精品一区二区883| 国产白丝网站精品污在线入口| 高潮精品一区videoshd| 成人福利视频网站| 色综合中文综合网| 欧美国产日韩在线观看| 日本一区二区三区dvd视频在线| 精品国产乱码久久久久久久| 久久精品亚洲精品国产欧美kt∨| 国产拍欧美日韩视频二区| 欧美激情自拍偷拍| 亚洲人成在线播放网站岛国| 一区二区三区蜜桃| 日本亚洲视频在线| 国产大片一区二区| 99久久精品国产一区二区三区| 99久久婷婷国产综合精品| 色婷婷av久久久久久久| 欧美高清视频不卡网| 精品国产91乱码一区二区三区| 26uuu色噜噜精品一区二区| 国产精品美女久久久久aⅴ| 亚洲精品一二三| 日av在线不卡| 99久久夜色精品国产网站| 欧美日韩精品电影| 久久精品亚洲精品国产欧美 | 国产精品一区二区三区99| 2023国产精华国产精品| 国产精品视频免费看| 一区二区三区精品久久久| 热久久久久久久| jlzzjlzz亚洲女人18| 欧美日韩一区高清| 久久久不卡网国产精品一区| 亚洲一区视频在线| 国产一区二区在线看| 色www精品视频在线观看| 日韩欧美成人激情| 亚洲黄色免费电影| 紧缚奴在线一区二区三区| 色婷婷久久一区二区三区麻豆| 日韩一区二区三区观看| 亚洲三级久久久| 国产一区二区免费视频| 欧美午夜不卡在线观看免费| 精品成人佐山爱一区二区| 亚洲影院理伦片| 成人小视频免费观看| 777奇米成人网| 亚洲精品国产一区二区三区四区在线| 琪琪久久久久日韩精品| 一本到不卡精品视频在线观看| 久久这里只有精品首页| 亚洲高清免费观看高清完整版在线观看 | 精品视频免费看| 国产女人aaa级久久久级 | 精品国产伦一区二区三区免费| 亚洲一区二区三区爽爽爽爽爽| 懂色一区二区三区免费观看| 日韩免费一区二区三区在线播放| 夜夜嗨av一区二区三区四季av| 成年人网站91| 免费人成在线不卡| 在线观看国产日韩| 亚洲欧洲韩国日本视频| 国产激情精品久久久第一区二区| 欧美高清dvd| 亚洲成a人片在线观看中文| 色综合久久精品| 国产精品不卡在线观看| 成人激情动漫在线观看| 久久综合久久综合久久| 免费人成精品欧美精品| 制服丝袜成人动漫| 亚洲 欧美综合在线网络| 欧美影院精品一区| 一区二区三区加勒比av| 一本色道久久综合亚洲91| 成人欧美一区二区三区| 波多野结衣中文字幕一区| 中文av一区二区| 国产98色在线|日韩| 国产精品欧美综合在线| 99久久精品免费精品国产| 中文字幕欧美一区| a美女胸又www黄视频久久| 国产精品电影院| 91国偷自产一区二区使用方法| 亚洲你懂的在线视频| 在线观看视频一区二区欧美日韩| 夜夜揉揉日日人人青青一国产精品| 一本大道综合伊人精品热热| 一区二区久久久| 欧美喷潮久久久xxxxx| 奇米色777欧美一区二区| 91精品婷婷国产综合久久性色| 日韩国产高清影视| 日韩一区二区高清| 国产成人亚洲综合色影视| 国产欧美一区二区三区沐欲| 成人国产精品免费观看视频| 亚洲丝袜美腿综合| 欧美精品在线一区二区三区| 捆绑调教一区二区三区| 国产日产欧美精品一区二区三区| 99精品一区二区三区| 亚洲一区二区四区蜜桃| 在线成人高清不卡| 久久精品国产精品亚洲红杏| 欧美激情一区二区| 欧美在线一区二区| 久久成人麻豆午夜电影| 国产精品视频线看| 欧美精品日韩综合在线| 国产一区999| 一区二区三区免费观看| 精品国免费一区二区三区| 成人av电影在线网| 三级成人在线视频|