G
Gigica
Guest
Hei, minulla on ongelma Proteus simuloida LCD-c-koodi koottu kanssa CodeVision.Tässä on kaavamainen ja c-koodin.Code:/************************************************* ****
Tämä ohjelma, jonka
CodeWizardAVR V1.25.3 Professional
Automaattinen ohjelma Generator
Copyright 1998-2007 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.comChip type: AT90S2313
Kello taajuus: 8.000000 MHz
Muistin malli: Tiny
Ulkopuolinen SRAM koko: 0
Data Stack koko: 32
************************************************** *** /# include <90s2313.h>
# include <delay.h>mitätön clearDisplay ()
(
PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x18;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_ms (5);
)mitätön entryModeSet (char inc_dec, char shift_normal)
(PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x48 | (inc_dec <<5) | (shift_normal <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön displayOnOff (char display_on, char cursor_on, char blink_on)
(PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x88 | (display_on <<6) | (cursor_on <<5) | (blink_on <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön cursorOrDisplayShift (char displayShift_cursorShift, char right_left)
(PORTB = 0x18;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (displayShift_cursorShift <<7) | (right_left <<6);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön functionSet (char data_length, char one_two_rows, char dimension_char)
(PORTB = 0x28 | (data_length <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (one_two_rows <<7) | (dimension_char <<6);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)
mitätön setDDRAMaddress (char osoite)
(PORTB = (0x88 | osoite) &0xfd;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (osoite <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön writeData (char data)
(PORTB = 0x0A | tietoja;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x0A | (tiedot <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)initLCD ()
(delay_ms (15);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_ms (5);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
PORTB = 0x28;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
/ / functionSet (0,1,0);
functionSet (0,1,0);
delay_ms (1);
displayOnOff (0,0,0);
delay_us (160);
displayOnOff (1,1,0);
delay_us (160);
entryModeSet (1,0);
delay_us (160)
mitätön printMessage (flash char * viesti)
(while (* viesti) writeData (* viesti );}
/ / Toteaa maailmanlaajuisesti muuttujat tästä
mitätön main (void)
(
/ / Port B käynnistystoimien
/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out
/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0
DDRB = 0xff;
PORTB = 0xff;/ / Port D initialization
/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In
/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T
DDRD = 0x00;
PORTD = 0x00;/ / Timer / Counter 0 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: 7,813 kHz
TCCR0 = 0x00;
TCNT0 = 0x00;/ / Timer / Counter 1 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: Timer 1 Pysäytetty
/ / Mode: Normal top = FFFFh
/ / OC1A output: lopettaa.
/ / OC1B output: lopettaa.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;/ / External Interrupt (s) käynnistystoimien
/ / INT0: Off
/ / INT1: Off
GIMSK = 0x00;
MCUCR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien
TIMSK = 0x00;/ / Analog vertailutehdas käynnistystoimien
/ / Analog vertailutehdas: Off
/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off
/ / Analog vertailutehdas Output: Off
ACSR = 0x80;
/ / Global mahdollistaa katkaisevat
initLCD ();kun taas (1)
(
clearDisplay ();
printMessage ( "ensimmäinen rivi");
delay_ms (1500);
setDDRAMaddress (0x40);
printMessage ( "toinen rivi");
delay_ms (1500);
)
)
Tämä ohjelma, jonka
CodeWizardAVR V1.25.3 Professional
Automaattinen ohjelma Generator
Copyright 1998-2007 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.comChip type: AT90S2313
Kello taajuus: 8.000000 MHz
Muistin malli: Tiny
Ulkopuolinen SRAM koko: 0
Data Stack koko: 32
************************************************** *** /# include <90s2313.h>
# include <delay.h>mitätön clearDisplay ()
(
PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x18;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_ms (5);
)mitätön entryModeSet (char inc_dec, char shift_normal)
(PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x48 | (inc_dec <<5) | (shift_normal <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön displayOnOff (char display_on, char cursor_on, char blink_on)
(PORTB = 0x08;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
PORTB = 0x88 | (display_on <<6) | (cursor_on <<5) | (blink_on <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön cursorOrDisplayShift (char displayShift_cursorShift, char right_left)
(PORTB = 0x18;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (displayShift_cursorShift <<7) | (right_left <<6);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön functionSet (char data_length, char one_two_rows, char dimension_char)
(PORTB = 0x28 | (data_length <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (one_two_rows <<7) | (dimension_char <<6);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)
mitätön setDDRAMaddress (char osoite)
(PORTB = (0x88 | osoite) &0xfd;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x08 | (osoite <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)mitätön writeData (char data)
(PORTB = 0x0A | tietoja;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
PORTB = 0x0A | (tiedot <<4);
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = PORTB &0xf7;
delay_us (40);
)initLCD ()
(delay_ms (15);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_ms (5);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
PORTB = 0x38;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
PORTB = 0x28;
# ASM (CLI)
delay_us (1);
# ASM ( "sei")
PORTB = 0;
delay_us (160);
/ / functionSet (0,1,0);
functionSet (0,1,0);
delay_ms (1);
displayOnOff (0,0,0);
delay_us (160);
displayOnOff (1,1,0);
delay_us (160);
entryModeSet (1,0);
delay_us (160)
(while (* viesti) writeData (* viesti );}
/ / Toteaa maailmanlaajuisesti muuttujat tästä
mitätön main (void)
(
/ / Port B käynnistystoimien
/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out
/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0
DDRB = 0xff;
PORTB = 0xff;/ / Port D initialization
/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In
/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T
DDRD = 0x00;
PORTD = 0x00;/ / Timer / Counter 0 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: 7,813 kHz
TCCR0 = 0x00;
TCNT0 = 0x00;/ / Timer / Counter 1 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: Timer 1 Pysäytetty
/ / Mode: Normal top = FFFFh
/ / OC1A output: lopettaa.
/ / OC1B output: lopettaa.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;/ / External Interrupt (s) käynnistystoimien
/ / INT0: Off
/ / INT1: Off
GIMSK = 0x00;
MCUCR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien
TIMSK = 0x00;/ / Analog vertailutehdas käynnistystoimien
/ / Analog vertailutehdas: Off
/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off
/ / Analog vertailutehdas Output: Off
ACSR = 0x80;
/ / Global mahdollistaa katkaisevat
initLCD ();kun taas (1)
(
clearDisplay ();
printMessage ( "ensimmäinen rivi");
delay_ms (1500);
setDDRAMaddress (0x40);
printMessage ( "toinen rivi");
delay_ms (1500);
)
)