parent
445af3bf9c
commit
0ae8922e72
@ -1,158 +0,0 @@
|
|||||||
// SerNum.h Formats avec zéros enlever
|
|
||||||
//Dans PP #include "SerNum.h" SetupSerNum();
|
|
||||||
void SetupSerNum() {
|
|
||||||
UBRR0=F_CPU/(9600*16L)-1; // set speed
|
|
||||||
UCSR0B=0x18; // -- -- -- rxe txe -- -- --
|
|
||||||
UCSR0C=0x06; // set mode: 8 data bits, no parity, 1 stop bit
|
|
||||||
}
|
|
||||||
//Rx S1 est toujours en sortie
|
|
||||||
//Tx S2 aussi, sous controle du 328 si TerOn (S2 ignoré);
|
|
||||||
#define TerOn UBRR0=F_CPU/(9600*16L)-1; UCSR0C=0x06; UCSR0B=0x08
|
|
||||||
#define TerOff DelMs(3); UCSR0C=0x06; UCSR0B=0
|
|
||||||
|
|
||||||
void TerCar( byte dd) { // write bloquant Ok initial
|
|
||||||
while(!(UCSR0A&0x20));// wait
|
|
||||||
UDR0=dd; // OK, send it now!
|
|
||||||
}
|
|
||||||
void TerCR() {
|
|
||||||
TerCar(13);TerCar(10);
|
|
||||||
}
|
|
||||||
void TerText(const char str[]) {
|
|
||||||
for (byte i=0; i< strlen(str); i++) {
|
|
||||||
TerCar(str[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TerBin8 (byte bb) {
|
|
||||||
for (byte i=0;i<8;i++) {
|
|
||||||
if (bb&0x80) TerCar('1');
|
|
||||||
else TerCar('0');
|
|
||||||
bb <<= 1;
|
|
||||||
}
|
|
||||||
TerCar(' ');
|
|
||||||
}
|
|
||||||
char TerConvNibble (byte nn) { // converti 4 bit hexa en Ascii
|
|
||||||
byte cc;
|
|
||||||
if (nn<10) {cc = nn + '0';}
|
|
||||||
else {cc = nn-10 + 'A';}
|
|
||||||
return cc;
|
|
||||||
}
|
|
||||||
void TerHex8 (byte hh) {
|
|
||||||
byte cc;
|
|
||||||
cc = TerConvNibble (hh >> 4) ; // ne modifie pas hh
|
|
||||||
TerCar(cc);
|
|
||||||
cc = TerConvNibble (hh & 0x0F) ;
|
|
||||||
TerCar(cc);
|
|
||||||
TerCar(' '); // space
|
|
||||||
}
|
|
||||||
void TerHex16 (uint16_t hh) {
|
|
||||||
byte cc;
|
|
||||||
cc = TerConvNibble (hh >> 12) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 8)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 4)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh )&0x0F) ; TerCar(cc);
|
|
||||||
TerCar(' ');
|
|
||||||
}
|
|
||||||
void TerHex12 (uint16_t hh) {
|
|
||||||
byte cc=0;
|
|
||||||
cc = TerConvNibble ((hh >> 8)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 4)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble (hh & 0x0F) ; TerCar(cc);
|
|
||||||
TerCar(' ');
|
|
||||||
}
|
|
||||||
void TerHex20 (uint32_t hh) {
|
|
||||||
byte cc;
|
|
||||||
cc = TerConvNibble ((hh >> 16)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 12)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 8 )&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 4 )&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble (hh & 0x0F) ; TerCar(cc);
|
|
||||||
TerCar(' ');
|
|
||||||
}
|
|
||||||
void TerHex32 (uint32_t hh) {
|
|
||||||
byte cc;
|
|
||||||
|
|
||||||
cc = TerConvNibble ((hh >> 28)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 24)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 20)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 16)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 12)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 8)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh >> 4)&0x0F) ; TerCar(cc);
|
|
||||||
cc = TerConvNibble ((hh )&0x0F) ; TerCar(cc);
|
|
||||||
TerCar(' ');
|
|
||||||
}
|
|
||||||
uint16_t TerBinDec8 (uint8_t bb) {
|
|
||||||
uint16_t dd=0;
|
|
||||||
for (byte i=0; i<8; i++) {
|
|
||||||
if ((dd & 0x0F)>0x04) {dd += 0x03;}
|
|
||||||
if ((dd & 0xF0)>0x40) {dd += 0x30;}
|
|
||||||
dd=dd<<1;
|
|
||||||
if ((bb & 0x80)) {dd += 1;} //inject bit
|
|
||||||
bb=bb<<1; // prepare next bit
|
|
||||||
}
|
|
||||||
return dd;
|
|
||||||
}
|
|
||||||
/*#define TerDec8(v) \
|
|
||||||
do { const int8_t vv = (v); \
|
|
||||||
if(vv<0) { TerDec8S(vv); } \
|
|
||||||
else { TerDec8U(vv); } \
|
|
||||||
} while(0)
|
|
||||||
*/
|
|
||||||
void TerDec8 (uint8_t hh) {
|
|
||||||
TerHex12(TerBinDec8(hh));
|
|
||||||
}
|
|
||||||
|
|
||||||
void TerDec8S (int8_t hh) {
|
|
||||||
if (hh<0) { // négatif
|
|
||||||
TerCar('-'); hh = -hh;
|
|
||||||
} else {
|
|
||||||
TerCar('+');
|
|
||||||
}
|
|
||||||
TerHex12(TerBinDec8(hh));
|
|
||||||
}
|
|
||||||
uint16_t BinDec9999 (uint16_t bb) { //0x270F max
|
|
||||||
uint32_t dd=0;
|
|
||||||
for (byte i=0; i<16; i++) {
|
|
||||||
if ((dd & 0x000F)>0x0004) {dd += 0x0003;}
|
|
||||||
if ((dd & 0x00F0)>0x0040) {dd += 0x0030;}
|
|
||||||
if ((dd & 0x0F00)>0x0400) {dd += 0x0300;}
|
|
||||||
if ((dd & 0xF000)>0x4000) {dd += 0x3000;}
|
|
||||||
dd=dd<<1;
|
|
||||||
if ((bb & 0x8000)) {dd += 1; } //inject bit
|
|
||||||
bb<<=1; // prepare next bit
|
|
||||||
}
|
|
||||||
return dd;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t BinDec16 (uint16_t bb) {
|
|
||||||
uint32_t dd=0;
|
|
||||||
for (byte i=0; i<16 ; i++) {
|
|
||||||
if ((dd & 0x000F)>0x0004) {dd += 0x0003;}
|
|
||||||
if ((dd & 0x00F0)>0x0040) {dd += 0x0030;}
|
|
||||||
if ((dd & 0x0F00)>0x0400) {dd += 0x0300;}
|
|
||||||
if ((dd & 0xF000)>0x4000) {dd += 0x3000;}
|
|
||||||
dd=dd<<1;
|
|
||||||
if ((bb & 0x8000)) {dd += 1; } //inject bit
|
|
||||||
bb<<=1; // prepare next bit
|
|
||||||
}
|
|
||||||
return dd;
|
|
||||||
}
|
|
||||||
void TerDec9999 (uint16_t hh) { // limité à 0x2703
|
|
||||||
if (hh>9999) { TerText("over "); }
|
|
||||||
else TerHex16(BinDec9999(hh));
|
|
||||||
}
|
|
||||||
void TerDec16 (uint32_t hh) { //
|
|
||||||
TerHex20(BinDec16(hh));
|
|
||||||
}
|
|
||||||
|
|
||||||
void TerDec16S (int16_t hh) { // signé
|
|
||||||
if (hh<0) { // negatif
|
|
||||||
TerCar('-'); hh = -hh;
|
|
||||||
} else {
|
|
||||||
TerCar('+');
|
|
||||||
}
|
|
||||||
TerHex20(BinDec16(hh));
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in new issue