|
|
|
|
13916 29 0 0 |
|
Опции темы | Поиск в этой теме |
30.11.2011, 12:58 | 21 | |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
а с сложен своим синтаксисом всякие спец символы простой и удобный компилятор CodeVisionAVR |
|
30.11.2011, 13:41 | 22 |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
к примеру мой проект на с "безумные часы"
Код:
/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 24.11.2011 Author : NeVaDa Company : Comments: Chip type : ATtiny25 AVR Core Clock frequency: 0,032768 MHz Memory model : Tiny External RAM size : 0 Data Stack size : 32 *****************************************************/ /************************************************************************************************************************************************** ПОДКЛЮЧАЕМЫЕ МОДУЛИ,КОНСТАНТЫ,ПРИВЯЗКА ИМЕН,МАКРОСЫ,ГЛОБАЛЬНЫЕ ЯЧЕЙКИ, **************************************************************************************************************************************************/ #include <tiny25.h> #include <delay.h> #include <stdlib.h> bit on = 0; unsigned int veroyat; unsigned int count_veroyat; register unsigned int secund = 0; //************************************************************************************************************************************************* /************************************************************************************************************************************************** МОДУЛЬНЫЕ БЛОКИ **************************************************************************************************************************************************/ /***************************************************** ИНИЦИАЛИЗАЦИЯ АПАРАТНАЯ *****************************************************/ void InitAll() { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out // State5=T State4=T State3=T State2=P State1=0 State0=0 PORTB=0x04; DDRB=0x03; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 0,256 kHz // Mode: Normal top=0xFF // OC1A output: Disconnected // OC1B output: Disconnected // Timer1 Overflow Interrupt: On // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off PLLCSR=0x00; TCCR1=0x08; GTCCR=0x00; TCNT1=0x00; OCR1A=0x00; OCR1B=0x00; OCR1C=0x00; // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: Off GIMSK=0x00; MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // Universal Serial Interface initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=0x00; // Analog Comparator initialization // Analog Comparator: Off ACSR=0x80; ADCSRB=0x00; DIDR0=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; } //***************************************************** //************************************************************************************************************************************************* /************************************************************************************************************************************************** ПРЕРИВАНИЯ **************************************************************************************************************************************************/ interrupt [TIM1_OVF] void timer1_ovf_isr(void) { if ((secund == 0) && (on != 1)) { PORTB.0 = (~PINB.0); PORTB.1 = (~PINB.1); secund = 60; } else {secund--;} if (PINB.2 == 1) // ЦИКЛ ТАКТОВ ПО ТАМПЕРУ { while (PINB.2 == 1) { PORTB.0 = (~PINB.0); PORTB.1 = (~PINB.1); delay_ms(200); } secund = 60; } } //************************************************************************************************************************************************* void main(void) { InitAll(); PORTB.0 = 1; // НАЧ ИНВЕРС PORTB.1 = 0; #asm("sei"); srand(0x0AD1); //ЗАПУСК СЛУЧ ИНИЦИАЛИЗАЦИИ while (1) { unsigned int sluc2; unsigned int sluc1; unsigned int sluc3; unsigned int count; unsigned int TEMP; sluc1 = rand(); sluc2 = rand(); // ПОЛУЧЕНИЕ ЧИСЕЛ if (count_veroyat != 0) // ЕСЛИ ВЕРОЯТНОСТЬ ЕСТЬ ВХОДИМ В НЕЁ { sluc3 = (sluc2 + veroyat); // + sluc2 = (sluc2 - veroyat); // - if ((sluc1 >= sluc2) && (sluc1 <= sluc3)) // СОВПАДЕНИЕ НАЙДЕНО РЕЖИМ БЕШЕННОГО ТАМПЕРА { count = (rand() % 10); // ВЗЯТЬ ВЕЛИЧИНУ ОСТАТКА ОТ ДЕЛЕНИЯ TEMP = (count * 60); // ПОЛУЧТЬ КОЛ_ВО СЕКУНД secund += TEMP; // ДОБАВЛЕНИЕ СЕКУНД ДЛЯ КОМПЕНСАЦИИ БЕЗУМИЯ on = 1; // ЗАПРЕТИТЬ РЕЖИМ ПО ПРЕРИВАНИЯМ for (; count != 0; count--) // ГЛЮКИ ПОШЛИ { PORTB.0 = (~PINB.0); PORTB.1 = (~PINB.1); delay_ms(200); } on = 0; } count_veroyat--; } else // ЕСЛИ СТЕРТА ВЕРОЯТНОСТЬ НАЙТИ НОВУЮ { count_veroyat = sluc2; veroyat = (sluc1 % 20); } delay_ms(700); } } |
30.11.2011, 20:36 | 23 |
Увлеченный
|
Если честно, меня это уже начинает харить! все так распинаются что язык Си такой крутой, куча всяких преимуществ перед ассемблером и т.д. такое чувство я заставляю писать на ассемблере. нравится Си, пишите на Си. я пишу на чем хочу.
и ещё, если кто нибудь ещё захочет сказать что "Си круче" и при этом не знает ассемблер, прочитайте что собой представляет сам язык http://ru.wikipedia.org/wik... оссобенно эту фразу: Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи — мнемокоды — команд и их аргументов. ещё вопросы? |
01.12.2011, 10:52 | 24 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 17.10.2018 15:32
Сообщений: 1039
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
01.12.2011, 14:25 | 25 |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
а я не говорю что с круче
он не очень удобен синтаксисом и для него очень важен хороший редактор кода например если {} не выделяються как в редакторе borland6 понять что во что вложено тяжело |
01.12.2011, 14:40 | 26 |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
примитивный генератор шума на asm тут с точно не нужен
Код:
.include "tn13def.inc" ;********************************************************************************************************************************************************** ; ИМЕНА И НАЗВАНИЯ ;********************************************************************************************************************************************************** .DEF BUF = R16 .DEF BUF2 = R17 ;********************************************************************************************************************************************************** ;НАЧАЛО .CSEG .ORG 0x0000 RJMP START START: LDI BUF,(1<<PB0) | (1<<PB1) ;НОЖКИ НА ВЫХОД OUT DDRB,BUF CLI ;ВСЕ ПРЕРИВАНИЯ ЗАГЛУШЕНЫ LDI R18,0xF3 ;СЛУЧАЙНЫЕ ЧИСЛА В ЯЧЕЙКИ LDI R19,0xBB LDI R20,0xCF LDI R21,0x09 LDI R22,0x95 LDI R23,0x0F LDI R24,0x11 LDI R25,0x78 LDI R26,0x34 CIKL_SUM: ROR R18 ;СДВИГИ С XOR ROR R19 ROR R20 ROR R21 ROR R22 ROR R23 ROR R24 ROR R25 ROR R26 MOV BUF,R19 ; EOR BUF,R23 ;XOR MOV R26,BUF MOV BUF,R21 ; EOR BUF,R22 ;XOR MOV R25,BUF MOV BUF,R25 SBRC BUF,1 ;ЕСЛИ 1 ТО КОПИРУЕМ ЕЕ В НОЖКУ 0 SBI PORTB,0 SBRS BUF,1 ;ЕСЛИ 0 ТО КОПИРУЕМ ЕГО В НОЖКУ 0 CBI PORTB,0 MOV BUF,R26 SBRC BUF,1 ;ЕСЛИ 1 ТО КОПИРУЕМ ЕЕ В НОЖКУ 1 SBI PORTB,1 SBRS BUF,1 ;ЕСЛИ 0 ТО КОПИРУЕМ ЕГО В НОЖКУ 1 CBI PORTB,1 RJMP CIKL_SUM |
01.12.2011, 16:31 | 27 |
Увлеченный
|
ты лучше бы со схемами выкладывал, ато от одного кода толку мало
|
01.12.2011, 19:06 | 28 |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
01.12.2011, 19:43 | 29 |
Увлеченный
|
хехе) не узнал)
да, платы у меня есть, всё никак руки не дойдут до SIM300DZ |
01.12.2011, 20:10 | 30 |
Новичок
Регистрация: 13.06.2010 Последняя активность: 29.10.2015 19:19
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|