Только вопрос: на win7 программа пойдет?
И еще вопрос (может лишний): а считывать ПЗУ будет можно?
Спасибо!
драйвер и док. на русском тут:Драйвер устройства: используется для связи на низком уровне с устройством и для инсталляции в операционную систему (Windows98/ME/NT/XP).
Код: Выделить всё
DoSetOutDataPort: ; My Programing
sbi DDRB,2
sbi DDRB,3
sbi DDRB,4
sbi PORTB,4 ;OE or G
sbi PORTB,3 ;CE or E
sbi PORTB,2 ;VPP on
nop
nop
nop
nop
nop
lds temp0,InputBufferBegin+4 ;first parameter - value of data bits PORTB
L1:
rcall SetPortOut
rcall ProgImpulse
rcall SetPortIn
rcall ReadData
lds temp0,InputBufferBegin+4
cp temp0,temp2
brne L1
rcall Clock
...
Код: Выделить всё
#include <stdlib.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/eeprom.h>
#include <util/delay.h>
uint8_t adrLo, adrHi;
int main(void)
{
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB = (0 << DDB7) | (0 << DDB6) | (0 << DDB5) | (0 << DDB4) | (0 << DDB3) | (0 << DDB2) | (0 << DDB1) | (0 << DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB = (0 << PORTB7) | (0 << PORTB6) | (0 << PORTB5) | (0 << PORTB4) | (0 << PORTB3) | (0 << PORTB2) | (0 << PORTB1) | (0 << PORTB0);
// Port C initialization
// Function: Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRC = (1 << DDC6) | (1 << DDC5) | (1 << DDC4) | (1 << DDC3) | (1 << DDC2) | (1 << DDC1) | (1 << DDC0);
// State: Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTC = (0 << PORTC6) | (0 << PORTC5) | (0 << PORTC4) | (0 << PORTC3) | (0 << PORTC2) | (0 << PORTC1) | (0 << PORTC0);
// Port D initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=In
DDRD = (1 << DDD7) | (1 << DDD6) | (1 << DDD5) | (1 << DDD4) | (1 << DDD3) | (1 << DDD2) | (1 << DDD1) | (0 << DDD0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=T
PORTD = (0 << PORTD7) | (0 << PORTD6) | (0 << PORTD5) | (0 << PORTD4) | (0 << PORTD3) | (0 << PORTD2) | (0 << PORTD1) | (0 << PORTD0);
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA = (0 << RXC) | (0 << TXC) | (0 << UDRE) | (0 << FE) | (0 << DOR) | (0 << PE) | (0 << U2X) | (0 << MPCM);
UCSRB = (0 << RXCIE) | (0 << TXCIE) | (0 << UDRIE) | (1 << RXEN) | (1 << TXEN) | (0 << UCSZ2) | (0 << RXB8) | (0 << TXB8);
UCSRC = (1 << URSEL) | (0 << UMSEL) | (0 << UPM1) | (0 << UPM0) | (0 << USBS) | (1 << UCSZ1) | (1 << UCSZ0) | (0 << UCPOL);
UBRRH = 0x00;
UBRRL = 0x33;
// Analog Comparator: Off
ACSR = (1 << ACD) | (0 << ACBG) | (0 << ACO) | (0 << ACI) | (0 << ACIE) | (0 << ACIC) | (0 << ACIS1) | (0 << ACIS0);
SFIOR = (0 << ACME);
adrLo = 0;
adrHi = 0;
while (1)
{
PORTC = adrLo;
PORTD = adrHi >> 2;
UDR = PINB;
if(++adrLo == 0b10000000)
{
adrLo = 0;
if(++adrHi == 0b01000000)
{
PORTC = 0;
PORTD = 0;
_delay_ms(5);
UDR = 'O';
_delay_ms(5);
UDR = 'K';
while(1);
}
}
while(!(UCSRA&(1<<UDRE)));
}
}
A12 можно к PD0 подключить.з.ы. 2 раза читать придется - на A12 тумблер