http://www.rlocman.ru/shem/schematics.html?di=51883
ребята посмотрите ссылочку, ничего не пойму. там тини подключается к юсб без кварца. как это возможно. программа на С. я в ней ничего не заметил про юсб. может чтото пропустил?
Код:
//-------------------------------------------------------------
// Module : MAX7219.C
// Author : Bob Carret
// Copyright www.bobhobby.com
// Description: MAX7219 LED Display Driver Routines for AVR
//-------------------------------------------------------------
#include <avr/io.h>
#include "max7219.h" // MAX7219 header file
//------------------------
// Constants
//------------------------
#define REG_DECODE 0x09 // "decode mode" register
#define REG_INTENSITY 0x0a // "intensity" register
#define REG_SCAN_LIMIT 0x0b // "scan limit" register
#define REG_SHUTDOWN 0x0c // "shutdown" register
#define REG_DISPLAY_TEST 0x0f // "display test" register
#define INTENSITY_MIN 0x00 // minimum display intensity
#define INTENSITY_MAX 0x0f // maximum display intensity
#define DIN PB1
#define CLK PB3
#define LOAD PB4
#define DIN_1 PORTB |= (1<<PB1)
#define DIN_0 PORTB &= ~(1<<PB1)
#define CLK_1 PORTB |= (1<<PB3)
#define CLK_0 PORTB &= ~(1<<PB3)
#define LOAD_1 PORTB |= (1<<PB4)
#define LOAD_0 PORTB &= ~(1<<PB4)
static void MAX7219_Write (unsigned char reg_number, unsigned char data);
static void MAX7219_SendByte (unsigned char data);
//-------------------------
// MAX7219_Init()
//-------------------------
void MAX7219_Init (void)
{
DDRB |= (1<<DDB1) | (1<<DDB3) | (1<<DDB4);
MAX7219_Write(REG_SCAN_LIMIT, 7); // set up to scan all eight digits
MAX7219_Write(REG_DECODE, 0xFF); // set to "decode" for all digits
MAX7219_Shutdown(1); // select normal operation
MAX7219_DisplayTest(0); // select normal operation
MAX7219_Brightness(INTENSITY_MAX);// set to maximum intensity
MAX7219_Clear();
}
//-----------------------------------------------------
// MAX7219_Shutdown()
// Description: Start / Stop Shutdown mode.
// 0 = start
// 1 = stop
//-----------------------------------------------------
void MAX7219_Shutdown(char OnOff)
{
MAX7219_Write(REG_SHUTDOWN,OnOff);
}
//--------------------------------------
// MAX7219_DisplayTest()
// Description: Start / Stop a display test.
// 0 = stop
// 1 = start
//--------------------------------------
void MAX7219_DisplayTest(char OnOff)
{
MAX7219_Write(REG_DISPLAY_TEST,OnOff);
}
//--------------------------------------------
//MAX7219_SetBrightness()
// Description: Set the LED display brightness
// Arguments : brightness (0-15)
// Returns : none
//--------------------------------------------
void MAX7219_Brightness(char brightness)
{
brightness &= 0x0f; // mask off extra bits
MAX7219_Write(REG_INTENSITY, brightness); // set brightness
}
//-----------------------------------------------------------
// MAX7219_DisplayChar()
// Description: Display a character on the specified digit.
// Arguments : digit = digit number (1-8)
// character = character to display (0-9, A-Z)
// Returns : none
//-----------------------------------------------------------
void MAX7219_DisplayChar(unsigned char digit, unsigned char character)
{
MAX7219_Write(digit, character);
}
//-----------------------
// Clear Display
//-----------------------
void MAX7219_Clear(void)
{
char i;
for (i=1; i < 9; i++)
MAX7219_Write(i, 0x0F); // turn all segments off
}
//------------------------------------------------
// MAX7219_Write()
//
// Description: Write to MAX7219
// Arguments : reg_number = register to write to
// dataout = data to write to MAX7219
// Returns : none
//------------------------------------------------
static void MAX7219_Write(unsigned char reg_number, unsigned char dataout)
{
LOAD_1; // take LOAD high to begin
MAX7219_SendByte(reg_number); // write register number to MAX7219
MAX7219_SendByte(dataout); // write data to MAX7219
LOAD_0; // take LOAD low to latch in data
asm("nop");
LOAD_1; // take LOAD high to end
}
//--------------------------------------------
// MAX7219_SendByte()
// Description: Send one byte to the MAX7219
// Arguments : dataout = data to send
// Returns : none
//--------------------------------------------
static void MAX7219_SendByte (unsigned char dataout)
{
char i;
asm("nop");
for (i=0; i<8; i++)
{
CLK_0; // bring CLK low
asm("nop");
if (dataout & 0x80){
PORTB |= (1<<PB1);
}
else{
PORTB &= ~(1<<PB1);
}
dataout=dataout<<1;
CLK_1; // bring CLK high
}
}