Код: Выделить всё
#include <pic.h>
//#include "header.h"
__CONFIG (HS & UNPROTECT & LVPDIS & WDTDIS & MCLRDIS & BORDIS);
void init (void); // подготовка МК
void wait(unsigned int hm);
void draw(unsigned char x);
void drawLCD(unsigned char x1,unsigned char x2,unsigned char x3,unsigned char x4,unsigned int waitT,unsigned int rpt);
#define PERIOD 1500000 // (xtal 16Mhz)
#define PER_COUNTS ((PERIOD / 100) - 1) // don't edit this!
#define PER_REMAINDER (PERIOD - (PER_COUNTS * 100)) // don't edit this!
static const unsigned char arr_seg[37]={ // начало массива
0b00111111, // 0й элемент, символ «0»
0b00000110, // 1й элемент, символ «1»
0b01011011, // 2й элемент, символ «2»
0b01001111, // 3й элемент, символ «3»
0b01100110, // 4й элемент, символ «4»
0b01101101, // 5й элемент, символ «5»
0b01111101, // 6й элемент, символ «6»
0b00000111, // 7й элемент, символ «7»
0b01111111, // 8й элемент, символ «8»
0b01101111, // 9й элемент, символ «9»
0b00000000, // 10й элемент, символ «SPACE»
0b01110111, // 11й элемент, символ «A»
0b01111100, // 12й элемент, символ «b»
0b01011000, // 13й элемент, символ «c»
0b01011110, // 14й элемент, символ «d»
0b01111001, // 15й элемент, символ «e»
0b01110001, // 16й элемент, символ «F»
0b01101111, // 17й элемент, символ «g»
0b01110100, // 18й элемент, символ «h»
0b00000100, // 19й элемент, символ «i»
0b00001110, // 20й элемент, символ «J»
0b00111000, // 21й элемент, символ «L»
0b01010100, // 22й элемент, символ «n»
0b01011100, // 23й элемент, символ «o»
0b01110011, // 24й элемент, символ «p»
0b01100111, // 25й элемент, символ «q»
0b01010000, // 26й элемент, символ «r»
0b01101101, // 27й элемент, символ «S»
0b01111000, // 28й элемент, символ «t»
0b00011100, // 29й элемент, символ «u»
0b01101110, // 30й элемент, символ «y»
0b01011011, // 31й элемент, символ «Z»
0b01111101, // 32й элемент, символ «Б»
0b00110001, // 33й элемент, символ «Г»
0b01110110, // 34й элемент, символ «Н»
0b01100110, // 35й элемент, символ «Ч»
0b01001111, // 36й элемент, символ «Э»
};
unsigned int pcount;
unsigned char halfsec=0,sec=0,min=10,hour=0;
char enableSB1=1;
unsigned char secEd=0;secDes=0;minEd=0;minDes=0;
void main(void)
{
unsigned char waitT,X1,X2,X3,X4,rpt=1,hm;
init();
X1=33;X2=34;X3=35;X4=36;
while(1){
drawLCD(33,34,35,36,5,65000);
do{drawLCD(10,23,16,16,20,1);}while(1);
}
}
void init(void){
CMCON = 0x07;
OPTION = 0b00001000; // TMR0 on, 1:1 prescale
pcount = 0;
INTCON = 0b10100000; // GIE on, T0IE on (turn interrupt on)
TRISB = 0b00000000;
RBPU=1;
TRISA=0b00110000;
//TRISA=0b00000000;
PORTB = 0b01111111;
RA0=0;
RA1=0;
RA2=0;
RA3=0;
}
void draw(unsigned char x){
PORTB=0b01111111-arr_seg[x];
}
void drawLCD(unsigned char X1,unsigned char X2,unsigned char X3,unsigned char X4,unsigned int waitT, unsigned int rpt){
RA0=0;RA1=0;RA2=0;RA3=0;
while(rpt){
draw(X1);
RA0=1;
wait(waitT);
RA0=0;
draw(X2);
RA1=1;
wait(waitT);
RA1=0;
draw(X3);
RA2=1;
wait(waitT);
RA2=0;
draw(X4);
RA3=1;
wait(waitT);
RA3=0;
rpt--;
}
}
void wait(unsigned int hm){
while(hm){hm--;}
}
пс пробывал while(waitT-- != 0); и void wait(volatile unsigned int hm) - безрезультатно