Сообщение от Butik:
Кстати.... У меня теги тоже чего то не вставляются-может глюк сервера может еще что.. и никаких быстрых кнопок у меня на странице не появляется.. Так что прошу отнестись к этому с пониманием.. Так как уходить пока никуда не собираюсь...
Сообщение от Butik:
И при чем тут культура общения?- если написанный текст или код не содержит никаких оскорбительных или прочих моментов- так какая разница в тегах он или нет?
list p=12f629 #include <p12f629.inc> errorlevel -302 __CONFIG _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF& _PWRTE_ON & _INTRC_OSC_NOCLKOUT ;***** VARIABLE DEFINITIONS cblock 0x20 Toggler endc ;********************************************************************** ORG 0x000 ; processor reset vector goto main ; go to beginning of program ;*********************************************************************** main ;начальная инициализация movf GPIO,f movlw 0x07 movwf CMCON bsf STATUS,RP0 movlw b'00101011' movwf TRISIO movlw b'10000101' movwf OPTION_REG bcf STATUS,RP0 movlw 0x20 movwf Toggler ;----------------------------------------------------------- Loop movf GPIO,w andlw 0x20 xorwf Toggler,w btfss STATUS,Z goto Loop clrf TMR0 movlw 0x20 xorwf Toggler,f btfss Toggler,5 goto Loop1 btfsc Toggler,5 goto Loop2 goto Loop ;------------------------------------------------- Loop1 nop bsf STATUS,RP0 movlw b'00101001' movwf TRISIO bcf STATUS,RP0 bsf GPIO,1 goto Loop ;------------------------------------------------------------ Loop2 nop movf GPIO,f bcf GPIO,1 bsf STATUS,RP0 movlw b'00101011' movwf TRISIO bcf STATUS,RP0 goto Loop ;------------------------------------------------------------ END ; directive 'end of program'
ist p=12f629 #include <p12f629.inc> errorlevel -302 __CONFIG _CP_OFF & _CPD_OFF & _BODEN_ON & _MCLRE_OFF & _WDT_OFF& _PWRTE_ON & _INTRC_OSC_NOCLKOUT ;***** VARIABLE DEFINITIONS cblock 0x20 Toggler endc ;********************************************************************** ORG 0x000 ; processor reset vector goto main ; go to beginning of program ;*********************************************************************** main ;начальная инициализация movf GPIO,f movlw 0x07 movwf CMCON bsf STATUS,RP0 movlw b'00101011' movwf TRISIO movlw b'10000101' movwf OPTION_REG bcf STATUS,RP0 movlw 0x20 movwf Toggler ;----------------------------------------------------------- Loop movf GPIO,w andlw 0x20 xorwf Toggler,w btfss STATUS,Z goto Loop clrf TMR0 movlw 0x20 xorwf Toggler,f btfss Toggler,5 goto Loop1 btfsc Toggler,5 goto Loop2 goto Loop ;------------------------------------------------- Loop1 nop bsf STATUS,RP0 movlw b'00101001' movwf TRISIO bcf STATUS,RP0 bsf GPIO,1 goto Loop ;------------------------------------------------------------ Loop2 nop movf GPIO,f bcf GPIO,1 bsf STATUS,RP0 movlw b'00101011' movwf TRISIO bcf STATUS,RP0 goto Loop ;------------------------------------------------------------ END ; directive 'end of program'
#include "C:\Microchip\_Project_\1c\main.h" #use fast_io(A) void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC); setup_vref(FALSE); set_tris_A(0x28); do{ if(input(PIN_A5)== 1) set_tris_A(0x28), output_bit(PIN_A1,1); if(input(PIN_A5)== 0) set_tris_A(0x2A); }while(1); }
unsigned short old_GPIO ; void init() { CMCON = 0x07; // все выводы контроллера-цифровые TRISIO = 0b00101000;/* настройка GPIO.2- GPIO.3 на ввод, остальные- на вывод*/ WPU = 0x00; //Подтягивающие резисторы выключены INTCON.INTE = 1; // внешнее прерывание разрешено INTCON.T0IE = 0; // прерывание от TMR0 запрещено OPTION_REG = 0b11000101;/* подтягивающие резисторы выключены, коэффициент деления предделителя таймера 1:64*/ INTCON.GIE = 0; // глобальное разрешение прерываний } // ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ void main() { init() ; // Начальная инициализация do { old_GPIO = GPIO; if(old_GPIO.F5 = 1) TRISIO = 0x28, old_GPIO.F1=1, GPIO = old_GPIO; if (old_GPIO = 0) TRISIO = 0x2A; } while(1); }
Сообщение от Butik:
с этих компиляторов с ума сойти можно.... капец какой то...
if(input(PIN_A5)== 1) set_tris_A(0x28), output_bit(PIN_A1,1); ....... if(old_GPIO.F5 = 1) TRISIO = 0x28, old_GPIO.F1=1, GPIO = old_GPIO; .......
Сообщение от Butik:
исправил = на == -картина та же....Хотя и при = компилятор не ругался...
if(tmp == 1) {...}
if(tmp = 1) {...}
Сообщение от Butik:
И потом... если в CCS можно писать через запятую(и все работает!!!!)... то почему в MikroC нельзя????
void main() { init() ; do { old_GPIO = GPIO; if(old_GPIO.F5 ==1) { TRISIO = 0x28; old_GPIO.F1=1; GPIO = old_GPIO; } if (old_GPIO == 0) TRISIO = 0x2A; } while(1); }
Сообщение от Азат:
1.Ребят подскажите можно ли в Протеусе добавить инфракрасник и эмулировать нажатия клавиш с пульта.Если да то как.Заранее спасибо.
Сообщение от Азат:
2.Как только не пробывал, никак не получается вывести на дисплей русское слово.Тестировал в Протеусе(может проблема в нем).
LCD_Out_Rus(1,1,"Привет");
Сообщение от :
void LCD_Out_Rus(char row, char column, char *text)
{
const unsigned char russian_HD44780[]={0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45,
0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7,
0x4D, 0x48, 0x4F, 0xA8, 0x50, 0x43,
0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB,
0xAC, 0xE2, 0xAD, 0xAE, 0x62, 0xAF,
0xB0, 0xB1, 0x61, 0xB2, 0xB3, 0xB4,
0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9,
0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE,
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78,
0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3,
0xC4, 0xC5, 0xC6, 0xC7};
if (*text)
{
if (*text > 191)
Lcd_Chr(row, column, russian_HD44780[(*text) - 192]);
else
Lcd_Chr(row, column, *text);
}
else
return;
*text++;
while(*text)
{
if (*text > 191)
Lcd_Chr_Cp(russian_HD44780[(*text) - 192]);
else
Lcd_Chr_Cp(*text);
text++;
}
}
void main() {
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // назначение выводов ЖКИ - PIC
Lcd_Cmd(LCD_CURSOR_OFF);
do{
LCD_Out_Rus(1,1,"Привет");
delay_ms(1000);
Lcd_Cmd(Lcd_CLEAR);
}while (1);
}
Сообщение от Азат:
Значит если я даже напишу по русски не факт что в протеусе выдет русский текст.Вот я попоробывал как вы сказали.Слово Привет.
Сообщение от :
unsigned char j=0;
void LCD_Out_Rus(char row, char column, char *text)
{
const unsigned char russian_HD44780[]={0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45,
0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7,
0x4D, 0x48, 0x4F, 0xA8, 0x50, 0x43,
0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB,
0xAC, 0xE2, 0xAD, 0xAE, 0x62, 0xAF,
0xB0, 0xB1, 0x61, 0xB2, 0xB3, 0xB4,
0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9,
0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE,
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78,
0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3,
0xC4, 0xC5, 0xC6, 0xC7};
if (*text)
{
if (*text > 191)
Lcd_Chr(row, column, russian_HD44780[(*text) - 192]);
else
Lcd_Chr(row, column, *text);
}
else
return;
*text++;
while(*text)
{
if (*text > 191)
Lcd_Chr_Cp(russian_HD44780[(*text) - 192]);
else
Lcd_Chr_Cp(*text);
text++;
}
}
void main() {
CMCON = 7; // Все выводы цифровые входы-выходы
TRISA=0b11110111; // все выводы PORTA на вход, RA3 - выход
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // назначение выводов ЖКИ - PIC
Lcd_Cmd(LCD_CURSOR_OFF);
LCD_Out_Rus(1,1,"Инициализация");
while (1)
{
delay_ms(500);
j++;
LCD_Out(2,j,"0"); //Черный квадрат вместо нуля
if(j==16) {break ;} /* если условие if выполнилось, то прерываем выполнение цикла while */
}
while(1){Lcd_Cmd(Lcd_CLEAR);/* бесконечный цикл */};
}
Сообщение от Азат:
Как заполнить знаком черным квадратом вместо нуля.
LCD_Out(2,j,"0");
Lcd_Chr(2, j, 0xff);
Сообщение от Азат:
Да помогло.Только все это дело зависает на 15,09с в протеусе.С начала очищает экран,и протеус зависает.
while (1) { delay_ms(500); j++; if(j != 17) LCD_Out(2,j,"0"); else { j = 0; Lcd_Cmd(Lcd_CLEAR); } }
Сообщение от :
#define SetBut Button(&PORTB, 7,10,0)
unsigned char j=0, i=0;
void LCD_Out_Rus(char row, char column, char *text)
{
const unsigned char russian_HD44780[]={0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45,
0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7,
0x4D, 0x48, 0x4F, 0xA8, 0x50, 0x43,
0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB,
0xAC, 0xE2, 0xAD, 0xAE, 0x62, 0xAF,
0xB0, 0xB1, 0x61, 0xB2, 0xB3, 0xB4,
0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9,
0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE,
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78,
0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3,
0xC4, 0xC5, 0xC6, 0xC7};
if (*text)
{
if (*text > 191)
Lcd_Chr(row, column, russian_HD44780[(*text) - 192]);
else
Lcd_Chr(row, column, *text);
}
else
return;
*text++;
while(*text)
{
if (*text > 191)
Lcd_Chr_Cp(russian_HD44780[(*text) - 192]);
else
Lcd_Chr_Cp(*text);
text++;
}
}
void main() {
CMCON = 7; // Все выводы цифровые входы-выходы
TRISA=0b11110111; // все выводы PORTA на вход, RA3 - выход
Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // назначение выводов ЖКИ - PIC
Lcd_Cmd(LCD_CURSOR_OFF);
LCD_Out_Rus(1,1," Инициализация");
while (1)
{
delay_ms(100);
j++;
Lcd_Chr(2, j, 0xff);
if(j==17) {break ;}
}
do {
LCD_Out(1,1," "); если поставить команду очистить то моргает?
if (SetBut) {
LCD_Out_Rus(2,1," Кнопка нажата ");
}
else{
LCD_Out_Rus(2,1,"Кнопка не нажата");
}
} while(1);
}
Сообщение от Азат:
1.Почему в протеусе зависает?
2.Правильно ли я сделал нажатие кнопки?
3.Как сделать при первом нажатие надпись осталась,при втором убралась?
4.Как правильно очистить первую строку, чтоб не моргала?
unsigned short oldstate, flag; ........... flag = 0; ............ for(;;){ if (Button(&PORTB, 7, 10, 1)) oldstate = 1; if (oldstate && Button(&PORTB, 7, 10, 0)) { flag = ~flag; oldstate = 0; } if (flag) LCD_Out_Rus(2,1," Надпись "); else LCD_Out_Rus(2,1," "); }
LCD_Out(1,1," "); // строка в 16 пробелов
Сообщение от :
Сначала вопрос - почему не работает в Протеусе, потом будет - почему работает в Протеусе и не работает в железе. Протез он и есть протез, не доверяю ему.
Сообщение от Butik:
А чему тогда доверять? Иногда ж возникает потребность пощупать схему не воспроизводя в железе????
Сообщение от :
0b11110111 как понять что из них RA3 или где прочитать?
#include "C:\Microchip\_Project_\1c\main.h" #use fast_io(A) void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC); setup_vref(FALSE); set_tris_A(0x28); do{ if(input(PIN_A5)== 1) { set_tris_A(0x28); output_bit(PIN_A1,1); } if(input(PIN_A5)== 0) set_tris_A(0x2A); }while(1); }
unsigned short old_GPIO; void init() { CMCON = 0x07; TRISIO = 0x28; OPTION_REG = 0b11000101; INTCON.GIE = 0; } void main() { init() ; do { old_GPIO = GPIO; if(old_GPIO.F5 == 1) {TRISIO =0x28; old_GPIO.F1 = 1; GPIO = old_GPIO;} if(old_GPIO.F5 == 0) TRISIO =0x2A; } while(1); }
Сообщение от Азат:
Да спасибо огромное пробывал по разному, с кнопками поиграл.)
1.Петр где можно нормальный русский ds скачать(или если не трудно вложите здесь).
2.Подскажите пожалуйста как реализовать bmp рисунок чтоб отобразился на дисплее.Т.е хочеться чтоб на экране было 4 рисунка подряд ввиде 4 кнопок.