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

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  

  • Сообщения

    • Помогите найти схему монитора Philips 221V2SB 21.5, или сервис мануал, в интернете в свободном доступе не нашел, нашёл для 226, но там скалер другой
    • Потерял ЗУ на своем планшете Ainol Novo 7 Fire. Могу ли я заряжать аккум через micro-USB разъем если переброшу провода с гнезда питания на контакты +5V и Gnd USB-гнезда? 
    • Звание врага заслужить нужно. А эти так...сявки дешевые  Как Ильич там говорил про политических проституток 
    • Параметры напряжения огласите все.....пожалуйста. Газового котла. Откуда пульсации в постоянном напряжении?
    • когда на трансформаторе речь идет о зазорах - это не те зазоры, что между витками. на кольцевом трансформаторе можно речь вести только о неравномерности намотки. а зазора на кольцевом трансформаторе нет.  начинай с того, что перерисуй схему. перерисуешь - будем вести разговор далее. подсказка - землю не веди длинными линиями. ее для того значком отдельным и обозначают, что бы не тянуть на пол листа связь.  там у тебя на трансе есть обозначение GND. так вот от него на 5 мм линию  и значек земли. там таких мест достаточно. у тебя разгрузится место и схему читать легче будет. заодно убери ломаные линии. там тоже есть таких мест. раза за три четыре - приведешь в божеский вид. заодно посмотри, что у тебя стоит на позиции С1 и С2. на схеме и по факту. 
    • Звонил с Кеплера? 
    • Это кому как,Ром. У него тоже не показалось,ровно так же @bigmanlav выложил видео. Но это дело индивидуальное-каждый сам решает. Я бы поигрался с временем обратного хода и временем интеграции

  • Набор начинающего радиолюбителя

  • Similar Content

    • By kasatik
      Всем привет.
      Ранее уже выставлял по ошибке фьюзы на тактирование с внешнего резонатора (Ext. Crystal Osc.), но тогда обошелся малой кровью, т.к. удалось затактировать "с пальца" и программатор хотя бы увидел камень. Но в этот раз поставил тактирование с внешнего сигнала (Ext. Clock), и фокус не удался. Программа крутится, светодиоды моргают, а комп не видит. С пальца не вышло, также как и с кварцем на 4Мгц. Подавал просто 1кГц c генератора на XTAL1. Вывести пациента из комы не удалось  Вопрос: почему прошлый раз прокатило, и в чем принципиальное отличие от этого режима? Что он ожидает от меня на вход?


    • 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.
×
×
  • Create New...