Jump to content
Sign in to follow this  
Anton Chehonin

Помогите с кодом , что за что отвечает?

Recommended Posts

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

 

Текст программы МК
/*******************************************************
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();

}
}

Share this post


Link to post
Share on other sites

Какой глубокий вопрос.. там же все подписано.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

  • Similar Content

    • By Дмитрий239
      Создал секцию:
      SECTIONS { .rodata : { . = ALIGN(16); _start_cmdList = .; *(.cmdList) KEEP(*(.cmdList)) _stop_cmdList = .; } } объявил структуру и указатель на начало:
      typedef struct { const char *cmdName; const void (*const commandVoid)(uint8_t, char *[], char[]); } CommandHandler; extern const CommandHandler _start_cmdList[]; для теста занёс одну функцию:
      const void kek(uint8_t argc, char *argv[], char answ[]) { strcpy_P(answ, PSTR("wow")); } static PROGMEM const char __attribute__((__used__)) kekAlias[] = "lol"; const CommandHandler __attribute__((section(".cmdList"))) __attribute__((__used__)) CMDHandler_kek = {.cmdName = kekAlias, .commandVoid = kek}; и проверяю:
      const CommandHandler *in = &_start_cmdList[0]; const CommandHandler *out = &CMDHandler_kek; if (in == out) uart.println(F("ok")); uart.println((unsigned int)(in), HEX); uart.println((unsigned int)(out), HEX); uart.println((unsigned int)out->cmdName); uart.println((unsigned int)out->commandVoid); uart.println((unsigned int)in->cmdName); uart.println((unsigned int)in->commandVoid); Выводит:
      1560
      1560
      124
      801
      12800
      0

      МК атмега168.
      Platform IO
      Avr gcc 11
      Линкер скрипт стандартный, с добавкой сверху

      Вопрос: как получить первый элемент массива в секции?
    • By Sergey Krugov
      Доброго времени суток дня и ночи!!! Я конечно понимаю, что за это время уже успел надоесть вам, но прошу откликнуться к просьбе о помощи. 
      Проблема заключается в следующем:

      В данной схеме используется Atmega8
      Фьюзы:

      При симуляции схемы происходит следующее:


      А дальше ничего не происходит. 
      Возникает также проблема такого рода: 

      Почему-то Протеус ругается на это,  но при удалении этой строки из кода в Протеусе, схема начинает вроде бы работать, но дальше setup на ЖКИ ничего не появлется. Очень прошу помочь понять, что не так. Мб на железе это всё бы и работало. Как разрешить эту проблему в программе?
      Я буду очень благодарен всем, кто откликнется на мою проблему. Надеюсь вы не оставите это без внимания. Очень надеюсь...
    • By dima040891
      Приветсвую!
      Кто ни будь работал с микросхемой STLED316S?  Это драйвер семисегментонго индикатора.
      Можете привести минимальный кусок кода который выводит любую цифру на дисплей. Из документации не пойму как с ней работать...
      На форумах инфы почти нет. Из того что есть тоже толку мало. Буду рад любой инфе по этой микросхеме.

      Ещё правильно же понимаю биты по SPI передаются младшим вперёд, а такты нужно передавать инверсные?

      В качестве МК применяю STM32.
    • By sunjob
      добрый день
      проект v-usb
      выкус из спецификации/инета/форумов:
      - реализация не полностью соответствует стандарту
      - работа на 100% не гарантируется
      - питание по USB / с компа может провалиться до 4-4.5В (а F_CPU идет в "притирочку" ...)  :))
      у всех рекомендованных схем подключения (3 шт) имеются те или иные очевидные минусы.



      как следствие стабильно может работать только при "определенных условиях"
      в планах поработать с библиотекой.
      для начало решил "набросать" альтернативный вариант. (так сказать, попытаться закрыть все возможные дыры в подключении)


       
      достаем помидоры, баркова, мысли, высказываемся (заранее благодарен)
      tag: v-usb, usb, avr, atmega328p, avr-gcc, linux/mac-osx
      NO atmega32u4, NO arduino pro micro etc...

×
×
  • Create New...