Banned
Регистрация: 12.05.2017
Сообщений: 104
Репутация: 14
|
#include <acc1.h>
#int_TIMER1 int16 volt,cur;int8 i=0,sec=0,min=0,hour=0; void TIMER1_isr(void) { i++; if (i==100) { i=0;sec++;} if (sec==60) {sec=0;min++;} if (min==60) {min=0;hour++;} } #define ENABLE_PIN A1 #define RS_PIN A0 #define RW_PIN A3 #define Data4 A2 #define Data5 C0 #define Data6 C1 #define Data7 C2 #include <lcdd.c> void lcdpr(signed int16 lc1, unsigned char v) //++++ ***226;***251;***226;***238;***228; ***237;***224; ***235;***241;***228; ***247;***232;***241;***235;***224; ***241; ***227;***224;***248;***229;***237;***232;***229;* **236; ***237;***229;***231;***237;***224;***247; ***237;***243;***235;***255; { signed int x2=-1; while (lc1>=0) { x2=x2+1; lc1=lc1-1000; } x2=x2+48; if (x2>48) if (v==4) lcd_send_byte(1,x2); lc1=lc1+1000; x2=-1; while (lc1>=0) { x2=x2+1;lc1=lc1-100; } x2=x2+48; if (v==4) lcd_send_byte(1,x2); lc1=lc1+100; x2=-1; if (v==4) lcd_send_byte(1,44); while (lc1>=0) { x2=x2+1;lc1=lc1-10; } x2=x2+48; lcd_send_byte(1,x2); lc1=lc1+10; x2=-1; while (lc1>=0) { x2=x2+1;lc1=lc1-1; } x2=x2+48; lcd_send_byte(1,x2); } void main() { setup_adc_ports(sAN3|sAN7); setup_adc(ADC_CLOCK_DIV_64); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //262 ms overflow enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); lcd_init(); delay_ms(500); lcd_gotoxy(1,1); lcd_putc("U="); lcd_gotoxy(10,1); lcd_putc("I="); while(TRUE) //***238;***241;***237;***238;***226;***237;***238;* **233; ***246;***232;***234;***235; ***239;***240;***238;***227;***240;***224;***236;* **236;***251; { lcd_gotoxy(1,1); lcdpr(hour,2); lcd_putc(":"); lcdpr(min,2); setup_adc(ADC_CLOCK_INTERNAL|VSS_VDD); //***237;***224;***241;***242;***240;***224;***232;* **226;***224;***229;***236; ***192;***214;***207; ***237;***224; ***238;***239;***238;***240;***237;***238;***229; ***237;***224;***239;***240;***255;***230;***229;* **237;***232;***229;=***239;***232;***242;***224;* **237;***232;***229; setup_adc_ports(sAN3); set_adc_channel(3); volt = read_adc()*2; delay_ms(30); setup_adc_ports(sAN7); set_adc_channel(7); cur = read_adc(); delay_ms(30); /* lcd_gotoxy(3,1); lcd_putc(" "); lcd_gotoxy(3,1); lcdpr(volt,4); //volt lcd_putc("V "); */ lcd_gotoxy(12,1); lcd_putc(" "); lcd_gotoxy(12,1); if (cur==1) cur=0; if (cur>75) cur=cur-((300*cur-22500)/7500); //***234;***238;***240;***240;***229;***234;***246;* **232;***255; if (cur<75) if (cur>10)cur=cur+((22500-300*cur)/7500); //***234;***238;***240;***240;***229;***234;***246;* **232;***255; lcdpr(cur,4); lcd_putc("A"); // delay_ms(00); } } |
||
Оценка
|
Эксперт
Регистрация: 08.11.2009
Сообщений: 2,310
Репутация: 640
|
а с чего вы решили что программа не заходит в прерывания?
|
||
Оценка
|
Banned
Регистрация: 12.05.2017
Сообщений: 104
Репутация: 14
|
Цитата:
#include <acc1.h>
#int_TIMER1 int16 volt,cur;int8 i=0,sec=0,min=0,hour=0; void TIMER1_isr(void) { i++; if (i==100) { i=0;sec++;} if (sec==60) {sec=0;min++;} if (min==60) {min=0;hour++;} } #define ENABLE_PIN A1 #define RS_PIN A0 #define RW_PIN A3 #define Data4 A2 #define Data5 C0 #define Data6 C1 #define Data7 C2 #include <lcdd.c> void lcdpr(signed int16 lc1, unsigned char v) //++++ ***226;***251;***226;***238;***228; ***237;***224; ***235;***241;***228; ***247;***232;***241;***235;***224; ***241; ***227;***224;***248;***229;***237;***232;***229;* **236; ***237;***229;***231;***237;***224;***247; ***237;***243;***235;***255; { signed int x2=-1; while (lc1>=0) { x2=x2+1; lc1=lc1-1000; } x2=x2+48; if (x2>48) if (v==4) lcd_send_byte(1,x2); lc1=lc1+1000; x2=-1; while (lc1>=0) { x2=x2+1;lc1=lc1-100; } x2=x2+48; if (v==4) lcd_send_byte(1,x2); lc1=lc1+100; x2=-1; if (v==4) lcd_send_byte(1,44); while (lc1>=0) { x2=x2+1;lc1=lc1-10; } x2=x2+48; lcd_send_byte(1,x2); lc1=lc1+10; x2=-1; while (lc1>=0) { x2=x2+1;lc1=lc1-1; } x2=x2+48; lcd_send_byte(1,x2); } void main() { setup_adc_ports(sAN3|sAN7); setup_adc(ADC_CLOCK_DIV_64); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //262 ms overflow enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); lcd_init(); delay_ms(500); lcd_gotoxy(1,1); lcd_putc("U="); lcd_gotoxy(10,1); lcd_putc("I="); while(TRUE) //***238;***241;***237;***238;***226;***237;***238;* **233; ***246;***232;***234;***235; ***239;***240;***238;***227;***240;***224;***236;* **236;***251; { lcd_gotoxy(1,1); lcdpr(hour,2); lcd_putc(":"); lcdpr(min,2); setup_adc(ADC_CLOCK_INTERNAL|VSS_VDD); //***237;***224;***241;***242;***240;***224;***232;* **226;***224;***229;***236; ***192;***214;***207; ***237;***224; ***238;***239;***238;***240;***237;***238;***229; ***237;***224;***239;***240;***255;***230;***229;* **237;***232;***229;=***239;***232;***242;***224;* **237;***232;***229; setup_adc_ports(sAN3); set_adc_channel(3); volt = read_adc()*2; delay_ms(30); setup_adc_ports(sAN7); set_adc_channel(7); cur = read_adc(); delay_ms(30); /* lcd_gotoxy(3,1); lcd_putc(" "); lcd_gotoxy(3,1); lcdpr(volt,4); //volt lcd_putc("V "); */ lcd_gotoxy(12,1); lcd_putc(" "); lcd_gotoxy(12,1); if (cur==1) cur=0; if (cur>75) cur=cur-((300*cur-22500)/7500); //***234;***238;***240;***240;***229;***234;***246;* **232;***255; if (cur<75) if (cur>10)cur=cur+((22500-300*cur)/7500); //***234;***238;***240;***240;***229;***234;***246;* **232;***255; lcdpr(cur,4); lcd_putc("A"); // delay_ms(00); } } |
||
Оценка
|
Banned
Регистрация: 12.05.2017
Сообщений: 104
Репутация: 14
|
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |