|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 8:03 pm
|
Страница 1 от 1
|
[ 7 мнения ] |
|
| Автор |
Съобщение |
|
kostov
Ранг: Минаващ
Регистриран на: Нед Юни 03, 2012 10:28 pm Мнения: 99
|
 Правилен ли ми е кода
Правилен ли е този код:  |  |  |  | Код: list p=16F84A include <p16F84A.inc> __CONFIG _CP_OFF & _WDT_OFF & PWRTE_ON & _XT_OSC w EQU 0 f EQU 1 Counter EQU H'0C' ORG H'0000' ;Вектор на НУ goto start ;Преход към началото на програмата start bsf STATUS, RP0 movlw B'11010111' movwf OPTION_REG bcf STATUS, RP0 clrf PORTB bsf STATUS, RP0 movlw B'11111000' movwf TRISB ;RB7 - RB3 входове, RB2, RB1, RB0 изходи bcf STATUS, RP0 goto main main bcf PORTB, 0 ;RB0=0 call Gpauza ;голяма пауза bsf PORTB, 0 ;RB0=1 call Mpauza ;малка пауза bcf PORTB, 1 ;RB1=0 call Mpauza ;малка пауза bsf PORTB, 1 ;RB1=1 call Mpauza ;малка пауза bsf PORTB, 2 ;RB2=1 call Mpauza ;малка пауза bcf PORTB, 2 ;RB2=0 call Mpauza ;малка пауза goto main ;повтаряне на цикъла Gpauza movlw D'10' ;пауза около 650 mS (10*65) movwf Counter clrf TMR0 again bcf INTCON, T0IF loop btfss INTCON, T0IF goto loop decfsz Counter, f goto again return Mpauza movlw D'1' ;пауза около 65 mS (1*65) movwf Counter clrf TMR0 again bcf INTCON, T0IF loop btfss INTCON, T0IF goto loop decfsz Counter, f goto again return END |  |  |  |  |
Трябва да се получи това:  Не разбирам много от програмиране, кода е готов примерен код за мигане на светодиод на RB0 преправен от мен.
|
| Пон Юли 02, 2012 8:42 pm |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: Правилен ли ми е кода
Ще се получи това, което искаш, ако оправиш две грешки: - вместо PWRTE_ON сложи _PWRTE_ON - имаш етикети с еднакви имена again и loop, може вторите да са again1 и loop1
|
| Пон Юли 02, 2012 10:28 pm |
|
 |
|
Пушека
Ранг: Новодошъл
Регистриран на: Пон Апр 16, 2012 9:05 pm Мнения: 182
|
 Re: Правилен ли ми е кода
Може би картинката на изходите няма да е баш тая дето ти се иска. Във всеки един момент променяш само един изход, станалите чакат в състоянието, в което са оставени до като не им дойде реда. При един таймер, трябва след поредното време, трябва да направиш промени и в трите ихода и след това да пуснеш следващото време. Изиграй го на симулатора.
|
| Вто Юли 03, 2012 7:46 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
 Re: Правилен ли ми е кода
Картинката на изходите ще е баш тая, която иска! От какъв зор да ги променя заедно? Нали идеята е изходите да се променят, когато им дойде времето, не да се дублират.
|
| Вто Юли 03, 2012 12:17 pm |
|
 |
|
Пушека
Ранг: Новодошъл
Регистриран на: Пон Апр 16, 2012 9:05 pm Мнения: 182
|
 Re: Правилен ли ми е кода
Всъщност си прав. Това е картинката. Признавам си без бой. 
|
| Вто Юли 03, 2012 1:00 pm |
|
 |
|
kostov
Ранг: Минаващ
Регистриран на: Нед Юни 03, 2012 10:28 pm Мнения: 99
|
 Re: Правилен ли ми е кода
Благодаря за мненията. Имам още един въпрос: времетраенето на голямата пауза всъщност трябва да е не 650 mS, а 640 mS. Какво трябва да се промени (добави) в кода за да стане това, в случай че не може да се постигне с донастройване на честотата на кварца?
|
| Вто Юли 03, 2012 9:23 pm |
|
 |
|
Пушека
Ранг: Новодошъл
Регистриран на: Пон Апр 16, 2012 9:05 pm Мнения: 182
|
 Re: Правилен ли ми е кода
Може да подкарваш таймера не от 0 а от 4 примерно. Ако приемем че 255 такта = 65мс - 1 такт = 255мкс. Сиреч ти трябват 4 такта по-малко за 64мс. Задавай му начална стойност 4 при всяко ново броене. Горе доле ще е към 64мс х10=640мс
|
| Сря Юли 04, 2012 7:59 am |
|
|
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|