Aloittelin tuossa launchpadilla ohjelmoimisen parin tutoriaalin ja datasheetin jälkeen ja ensimmäisenä projektina on numeroiden 1-9 näyttäminen 7-segmentillä. 7-segmentti on common anode ja olen siinä saanut näkymään jo osan numeroista. Vaatii aika paljon kikkailua nykyisellä koodilla uuden numeron näyttäminen, jokin segmentti jää uupumaan aina jostain syystä. numerot näkyvät nyt 1-3. Kolmosen kanssa sai hakea vähän aikaa miksi ei c näy. nyt 4 puuttuu f vaikka mielestäni sen pitäisi olla. Uskon että on paljon parempiakin tapoja hoitaa tämä mutta se ei ole nyt pääpointti. Miksi 4 puuttuu f sakara? Käytän tuossa nyt tuota togglea. En löytänyt että onko olemassa komentoa jolla saisi vain HIGH tai LOW.Tyyliin P1OUT = BIT1HIGH + BIT1LOW
[code]/*P1
*BIT0=E
*BIT1=D
*BIT2=C
*BIT3=DP
*BIT4=A
*BIT5=B
*P2BIT1=G
*P2BIT2=F
*/
#include <msp430g2553.h>
#define clear (P1OUT = 0xFF) + (P2OUT = 0xFF)
#define nro1 (P1OUT ^= BIT5 + BIT2)
#define nro2 (P1OUT ^= BIT0 + BIT1 + BIT5 + BIT4) + (P2OUT ^= BIT1)
#define nro3 (P1OUT ^= BIT1 + BIT2 + BIT4 + BIT5) + (P2OUT ^= BIT1)
#define nro4 (P1OUT ^= BIT5 + BIT2) + (P2OUT ^= BIT2 + BIT1)
void delay_ms(unsigned int ms )
{
unsigned int i;
for (i = 0; i<= ms; i++)
__delay_cycles(2000);
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;
P2DIR |= BIT1 + BIT2 + BIT0;
while(1)
{
clear;
nro1;
delay_ms(1000);
clear;
nro2;
delay_ms(1000);
clear;
nro3;
delay_ms(1000);
clear;
nro4;
delay_ms(1000);
}
}
[/code]
edit: otetaanpa takaisin. huono liitos vikana
silti nuo HIGH ja LOW komennot kiinnostais ja muutenki vinkit koodiin ja yleensä c opiskeluun