Перейти к содержанию

Anton Chehonin

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Anton Chehonin

  1. Вот сам код программ

     

    Текст программы МК
    /*******************************************************
    Chip type : ATmega8
    Program type : Application
    AVR Core Clock frequency: 8,000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    *******************************************************/

    #include <mega8.h>
    #include <delay.h>

    // Alphanumeric LCD functions
    #include <alcd.h>

    // Standard Input/Output functions
    #include <stdio.h>
    #include <stdlib.h>

    // Declareyourglobalvariableshere

    float s;
    unsigned long int k0=0,k1=0,k2=0,k3=0,k0123=0;
    unsigned long int k4=0,k5=0,k6=0,k7=0;//k4567=0;
    unsigned long int k8=0,k9=0,k10=0,k11=0;//k891011=0;
    unsigned long int k12=0,k13=0,k14=0,k15=0;//k12131415=0;
    unsigned long int k16=0,k17=0;
    char k=0;

    void main(void)
    {
    // Declare your local variables here

    char buffer[20];


    char a,b,c,d,e,f;
    // Присваивание переменным a,b,c численные значения 63 05 00 01 CF A1
    a=0b01100011;
    //63
    b=0b00000101;
    //05
    c=0b00000000;
    //00
    d=0b00000001;
    //01
    e=0b11001111;
    //CF
    f=0b10100001;
    //A1

    DDRD.2=1;
    PORTD.2=0;

    // 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«UPE) | (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;


    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTС Bit 0
    // RD - PORTС Bit 1
    // EN - PORTС Bit 2
    // D4 - PORTС Bit 3
    // D5 - PORTС Bit 4
    // D6 - PORTС Bit 5
    // D7 - PORTD Bit 7
    // Characters/line: 20
    lcd_init(20);
    lcd_clear();
    delay_ms(1000);
    while (1)
    {
    printf("%c%c%c%c%c%c",a,b,c,d,e,f); // отправка в порт

    //принимаем байты
    k=getchar(); // 0 байт
    if (k==99) {PORTD.2=1;}
    k0=getchar(); // 1 байт Активная энергия+
    k1=getchar(); // 2 байт
    k2=getchar(); // 3 байт
    k3=getchar(); // 4 байт
    k4=getchar(); // 1 байт Активная энергия-
    k5=getchar();
    k6=getchar();
    k7=getchar();
    k8=getchar(); // 1 байт Реактивная энергия+
    k9=getchar();
    k10=getchar();
    k11=getchar();
    k12=getchar(); // 1 байт Реактивная энергия-
    k13=getchar();
    k14=getchar();
    k15=getchar();
    k16=getchar();
    k17=getchar(); // 19 байт


    k0=k0«24;
    k1=k1«16;
    k2=k2«8;
    k0123=k0|k1|k2|k3;


    s=k0123;
    sprintf(buffer,"A+=%.4fkWh",s/2500);
    lcd_gotoxy(0,0);
    lcd_puts(buffer);

    // k4=k4«24;
    // k5=k5«16;
    // k6=k6«8;
    // k4567=k4|k5|k6|k7;
    // s=k4567;
    // sprintf(buffer,"A-=%.4fkWh",s/2500);
    // lcd_gotoxy(0,1);
    // lcd_puts(buffer);
    //
    // k8=k8«24;
    // k9=k9«16;
    // k10=k10«8;
    // k891011=k8|k9|k10|k11;
    //
    //
    // s=k891011;
    // sprintf(buffer,"R+=%.4fkVarh",s/2500);
    // lcd_gotoxy(0,2);
    // lcd_puts(buffer);
    //
    //
    // k12=k12«24;
    // k13=k13«16;
    // k14=k14«8;
    // k12131415=k12|k13|k14|k15;
    // s=k12131415;
    // sprintf(buffer,"R-=%.4fkVarh",s/2500);
    // lcd_gotoxy(0,3);
    // lcd_puts(buffer);

    delay_ms(1000);
    lcd_clear();

    }
    }

×
×
  • Создать...