mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-15 12:29:26 +01:00
Adding Matrix, Sprite changed to 1 bit only (max 8x8).
This commit is contained in:
parent
cb066a259d
commit
ea34315bc2
225
targets/arduino/Matrix.cpp
Executable file
225
targets/arduino/Matrix.cpp
Executable file
@ -0,0 +1,225 @@
|
||||
/*
|
||||
Matrix.cpp - Max7219 LED Matrix library for Arduino & Wiring
|
||||
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
// TODO: Support segment displays in api?
|
||||
// TODO: Support varying vendor layouts?
|
||||
|
||||
/******************************************************************************
|
||||
* Includes
|
||||
******************************************************************************/
|
||||
|
||||
extern "C" {
|
||||
// AVR LibC Includes
|
||||
#include <inttypes.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
// Wiring Core Includes
|
||||
#undef abs
|
||||
#include "WConstants.h"
|
||||
|
||||
// Wiring Core Prototypes
|
||||
//void pinMode(uint8_t, uint8_t);
|
||||
//void digitalWrite(int, uint8_t);
|
||||
}
|
||||
|
||||
#include "Sprite.h"
|
||||
#include "Matrix.h"
|
||||
|
||||
/******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
// Matrix registers
|
||||
#define REG_NOOP 0x00
|
||||
#define REG_DIGIT0 0x01
|
||||
#define REG_DIGIT1 0x02
|
||||
#define REG_DIGIT2 0x03
|
||||
#define REG_DIGIT3 0x04
|
||||
#define REG_DIGIT4 0x05
|
||||
#define REG_DIGIT5 0x06
|
||||
#define REG_DIGIT6 0x07
|
||||
#define REG_DIGIT7 0x08
|
||||
#define REG_DECODEMODE 0x09
|
||||
#define REG_INTENSITY 0x0A
|
||||
#define REG_SCANLIMIT 0x0B
|
||||
#define REG_SHUTDOWN 0x0C
|
||||
#define REG_DISPLAYTEST 0x0F
|
||||
|
||||
/******************************************************************************
|
||||
* Constructors
|
||||
******************************************************************************/
|
||||
|
||||
Matrix::Matrix(uint8_t data, uint8_t clock, uint8_t load, uint8_t screens /* = 1 */)
|
||||
{
|
||||
// record pins for sw spi
|
||||
_pinData = data;
|
||||
_pinClock = clock;
|
||||
_pinLoad = load;
|
||||
|
||||
// set ddr for sw spi pins
|
||||
pinMode(_pinClock, OUTPUT);
|
||||
pinMode(_pinData, OUTPUT);
|
||||
pinMode(_pinLoad, OUTPUT);
|
||||
|
||||
// allocate screenbuffers
|
||||
_screens = screens;
|
||||
_buffer = (uint8_t*)calloc(_screens, 64);
|
||||
_maximumX = (_screens * 8);
|
||||
|
||||
// initialize registers
|
||||
clear(); // clear display
|
||||
setScanLimit(0x07); // use all rows/digits
|
||||
setBrightness(0x0F); // maximum brightness
|
||||
setRegister(REG_SHUTDOWN, 0x01); // normal operation
|
||||
setRegister(REG_DECODEMODE, 0x00); // pixels not integers
|
||||
setRegister(REG_DISPLAYTEST, 0x00); // not in test mode
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* MAX7219 SPI
|
||||
******************************************************************************/
|
||||
|
||||
// sends a single byte by sw spi (no latching)
|
||||
void Matrix::putByte(uint8_t data)
|
||||
{
|
||||
uint8_t i = 8;
|
||||
uint8_t mask;
|
||||
while(i > 0) {
|
||||
mask = 0x01 << (i - 1); // get bitmask
|
||||
digitalWrite(_pinClock, LOW); // tick
|
||||
if (data & mask){ // choose bit
|
||||
digitalWrite(_pinData, HIGH); // set 1
|
||||
}else{
|
||||
digitalWrite(_pinData, LOW); // set 0
|
||||
}
|
||||
digitalWrite(_pinClock, HIGH); // tock
|
||||
--i; // move to lesser bit
|
||||
}
|
||||
}
|
||||
|
||||
// sets register to a byte value for all screens
|
||||
void Matrix::setRegister(uint8_t reg, uint8_t data)
|
||||
{
|
||||
digitalWrite(_pinLoad, HIGH); // begin
|
||||
for(uint8_t i = 0; i < _screens; ++i){
|
||||
putByte(reg); // specify register
|
||||
putByte(data); // send data
|
||||
}
|
||||
digitalWrite(_pinLoad, LOW); // latch in data
|
||||
digitalWrite(_pinLoad, HIGH); // end
|
||||
}
|
||||
|
||||
// syncs row of display with buffer
|
||||
void Matrix::syncRow(uint8_t row)
|
||||
{
|
||||
if (!_buffer) return;
|
||||
if (row < 0 || row >= 8) return;
|
||||
digitalWrite(_pinLoad, HIGH); // begin
|
||||
for(uint8_t i = 0; i < _screens; ++i){
|
||||
putByte(8 - row); // specify register
|
||||
putByte(_buffer[row + (8 * i)]); // send data
|
||||
}
|
||||
digitalWrite(_pinLoad, LOW); // latch in data
|
||||
digitalWrite(_pinLoad, HIGH); // end
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* MAX7219 Configuration
|
||||
******************************************************************************/
|
||||
|
||||
// sets how many digits are displayed
|
||||
void Matrix::setScanLimit(uint8_t value)
|
||||
{
|
||||
setRegister(REG_SCANLIMIT, value & 0x07);
|
||||
}
|
||||
|
||||
// sets brightness of the display
|
||||
void Matrix::setBrightness(uint8_t value)
|
||||
{
|
||||
setRegister(REG_INTENSITY, value & 0x0F);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* Helper Functions
|
||||
******************************************************************************/
|
||||
|
||||
void Matrix::buffer(uint8_t x, uint8_t y, uint8_t value)
|
||||
{
|
||||
if (!_buffer) return;
|
||||
if (x < 0 || x >= _maximumX || y < 0 || y >= 8) return;
|
||||
|
||||
uint8_t offset = x; // record x
|
||||
x %= 8; // make x relative to a single matrix
|
||||
offset -= x; // calculate buffer offset
|
||||
|
||||
// wrap shift relative x for nexus module layout
|
||||
if (x == 0){
|
||||
x = 8;
|
||||
}
|
||||
--x;
|
||||
|
||||
// record value in buffer
|
||||
if(value){
|
||||
_buffer[y + offset] |= 0x01 << x;
|
||||
}else{
|
||||
_buffer[y + offset] &= ~(0x01 << x);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* User API
|
||||
******************************************************************************/
|
||||
|
||||
// buffers and writes to screen
|
||||
void Matrix::write(uint8_t x, uint8_t y, uint8_t value)
|
||||
{
|
||||
buffer(x, y, value);
|
||||
|
||||
// update affected row
|
||||
syncRow(y);
|
||||
}
|
||||
|
||||
void Matrix::write(uint8_t x, uint8_t y, Sprite sprite)
|
||||
{
|
||||
for (uint8_t i = 0; i < sprite.height(); i++){
|
||||
for (uint8_t j = 0; j < sprite.width(); j++)
|
||||
buffer(x + j, y + i, sprite.read(j, i));
|
||||
|
||||
syncRow(y + i);
|
||||
}
|
||||
}
|
||||
|
||||
// clears screens and buffers
|
||||
void Matrix::clear(void)
|
||||
{
|
||||
if (!_buffer) return;
|
||||
|
||||
// clear buffer
|
||||
for(uint8_t i = 0; i < 8; ++i){
|
||||
for(uint8_t j = 0; j < _screens; ++j){
|
||||
_buffer[i + (8 * j)] = 0x00;
|
||||
}
|
||||
}
|
||||
|
||||
// clear registers
|
||||
for(uint8_t i = 0; i < 8; ++i){
|
||||
syncRow(i);
|
||||
}
|
||||
}
|
||||
|
54
targets/arduino/Matrix.h
Executable file
54
targets/arduino/Matrix.h
Executable file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
Matrix.h - Max7219 LED Matrix library for Arduino & Wiring
|
||||
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef Matrix_h
|
||||
#define Matrix_h
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
class Sprite;
|
||||
|
||||
class Matrix
|
||||
{
|
||||
private:
|
||||
uint8_t _pinData;
|
||||
uint8_t _pinClock;
|
||||
uint8_t _pinLoad;
|
||||
|
||||
uint8_t* _buffer;
|
||||
uint8_t _screens;
|
||||
uint8_t _maximumX;
|
||||
|
||||
void putByte(uint8_t);
|
||||
void setRegister(uint8_t, uint8_t);
|
||||
void syncRow(uint8_t);
|
||||
|
||||
void setScanLimit(uint8_t);
|
||||
|
||||
void buffer(uint8_t, uint8_t, uint8_t);
|
||||
public:
|
||||
Matrix(uint8_t, uint8_t, uint8_t, uint8_t = 1);
|
||||
void setBrightness(uint8_t);
|
||||
void write(uint8_t, uint8_t, uint8_t);
|
||||
void write(uint8_t, uint8_t, Sprite);
|
||||
void clear(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -23,37 +23,24 @@
|
||||
|
||||
#include "Sprite.h"
|
||||
|
||||
void Sprite::init(uint8_t width, uint8_t height, uint8_t depth)
|
||||
void Sprite::init(uint8_t width, uint8_t height)
|
||||
{
|
||||
_width = width;
|
||||
_height = height;
|
||||
_ppb = 8 / depth; // pixels per byte = 8 / bit depth
|
||||
_depth = 8 / _ppb; // round bit depth up to nearest divisor of 8
|
||||
_bpr = (_width + _ppb - 1) / _ppb; // bytes per row (rounding up)
|
||||
_mask = (1 << _depth) - 1; // mask = a byte with 1's in the _depth LSBs
|
||||
|
||||
// _buffer packs _ppb pixels into each byte.
|
||||
// for example, Sprite(3, 2, 3) yields:
|
||||
// _buffer[0] = LSN: pixel (0, 0); MSN: pixel (1, 0)
|
||||
// _buffer[1] = LSN: pixel (2, 0); MSN: empty
|
||||
// _buffer[2] = LSN: pixel (0, 1); MSN: pixel (1, 1)
|
||||
// _buffer[3] = LSN: pixel (2, 1); MSN: empty
|
||||
// LSN = least-significant nibble (bits 0 to 3),
|
||||
// MSN = most-significant nibble (bits 4 to 7)
|
||||
_width = width >= 8 ? 8 : width;
|
||||
_height = height >= 8 ? 8 : height;
|
||||
|
||||
// for now, do nothing if this allocation fails. methods that require it
|
||||
// should silently fail if _buffer is null.
|
||||
_buffer = (uint8_t *) calloc(_height * _bpr, 1);
|
||||
_buffer = (uint8_t *) calloc(_height, 1);
|
||||
}
|
||||
|
||||
Sprite::Sprite(uint8_t width, uint8_t height, uint8_t depth)
|
||||
Sprite::Sprite(uint8_t width, uint8_t height)
|
||||
{
|
||||
init(width, height, depth);
|
||||
init(width, height);
|
||||
}
|
||||
|
||||
Sprite::Sprite(uint8_t width, uint8_t height, uint8_t depth, uint8_t row, ...)
|
||||
Sprite::Sprite(uint8_t width, uint8_t height, uint8_t row, ...)
|
||||
{
|
||||
init(width, height, depth);
|
||||
init(width, height);
|
||||
|
||||
if (!_buffer) return;
|
||||
|
||||
@ -62,7 +49,7 @@ Sprite::Sprite(uint8_t width, uint8_t height, uint8_t depth, uint8_t row, ...)
|
||||
|
||||
int y = 0;
|
||||
|
||||
for (y = 0; ; y++) {
|
||||
for (y = 0; ; y++) {
|
||||
for (int x = 0; x < width && x < 8; x++)
|
||||
write(x, y, (row >> (width - x - 1)) & 0x01);
|
||||
|
||||
@ -88,34 +75,17 @@ uint8_t Sprite::height() const
|
||||
void Sprite::write(uint8_t x, uint8_t y, uint8_t value)
|
||||
{
|
||||
if (!_buffer) return;
|
||||
|
||||
// XXX: this should mask according to bit depth specified in constructor,
|
||||
// not the rounded bit depth stored in _depth
|
||||
|
||||
// (x, y) is in the x / _ppb byte of the y'th row (the y'th row starts at
|
||||
// byte y * _bpr of _buffer). this byte may contain more than one pixel.
|
||||
uint8_t *p = _buffer + y * _bpr + x / _ppb;
|
||||
|
||||
// pixel (x, y) is in position x % _ppb of the byte, and each position is
|
||||
// _depth bits.
|
||||
uint8_t offset = _depth * (x % _ppb);
|
||||
if (x < 0 || x >= _width || y < 0 || y >= _height) return;
|
||||
|
||||
// we need to bitwise-or the value of the other pixels in the byte with
|
||||
// the new value, masked and shifted into the proper bits.
|
||||
*p = (*p & ~(_mask << offset)) | ((value & _mask) << offset);
|
||||
_buffer[y] = (_buffer[y] & ~(0x01 << x)) | ((value & 0x01) << x);
|
||||
}
|
||||
|
||||
uint8_t Sprite::read(uint8_t x, uint8_t y) const
|
||||
{
|
||||
if (!_buffer) return 0;
|
||||
if (x < 0 || x >= _width || y < 0 || y >= _height) return 0;
|
||||
|
||||
// (x, y) is in the x / _ppb byte of the y'th row (the y'th row starts at
|
||||
// byte y * _bpr of _buffer). this byte may contain more than one pixel.
|
||||
uint8_t *p = _buffer + y * _bpr + x / _ppb;
|
||||
|
||||
// pixel (x, y) is in position x % _ppb of the byte, and each position is
|
||||
// _depth bits.
|
||||
uint8_t offset = _depth * (x % _ppb);
|
||||
|
||||
return (*p >> offset) & _mask;
|
||||
return (_buffer[y] >> x) & 0x01;
|
||||
}
|
@ -22,7 +22,7 @@
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
class Matrix;
|
||||
#include "binary.h"
|
||||
|
||||
class Sprite
|
||||
{
|
||||
@ -35,16 +35,14 @@ class Sprite
|
||||
uint8_t _mask;
|
||||
uint8_t *_buffer;
|
||||
|
||||
void init(uint8_t width, uint8_t height, uint8_t depth);
|
||||
void init(uint8_t width, uint8_t height);
|
||||
public:
|
||||
Sprite(uint8_t width, uint8_t height, uint8_t depth);
|
||||
Sprite(uint8_t width, uint8_t height, uint8_t depth, uint8_t row, ...);
|
||||
Sprite(uint8_t width, uint8_t height);
|
||||
Sprite(uint8_t width, uint8_t height, uint8_t row, ...);
|
||||
uint8_t width() const;
|
||||
uint8_t height() const;
|
||||
void write(uint8_t x, uint8_t y, uint8_t value);
|
||||
uint8_t read(uint8_t x, uint8_t y) const;
|
||||
|
||||
friend class Matrix;
|
||||
};
|
||||
|
||||
#endif
|
1
targets/arduino/WConstants.h
Normal file
1
targets/arduino/WConstants.h
Normal file
@ -0,0 +1 @@
|
||||
#include "wiring.h"
|
515
targets/arduino/binary.h
Normal file
515
targets/arduino/binary.h
Normal file
@ -0,0 +1,515 @@
|
||||
#ifndef Binary_h
|
||||
#define Binary_h
|
||||
|
||||
#define B0 0
|
||||
#define B00 0
|
||||
#define B000 0
|
||||
#define B0000 0
|
||||
#define B00000 0
|
||||
#define B000000 0
|
||||
#define B0000000 0
|
||||
#define B00000000 0
|
||||
#define B1 1
|
||||
#define B01 1
|
||||
#define B001 1
|
||||
#define B0001 1
|
||||
#define B00001 1
|
||||
#define B000001 1
|
||||
#define B0000001 1
|
||||
#define B00000001 1
|
||||
#define B10 2
|
||||
#define B010 2
|
||||
#define B0010 2
|
||||
#define B00010 2
|
||||
#define B000010 2
|
||||
#define B0000010 2
|
||||
#define B00000010 2
|
||||
#define B11 3
|
||||
#define B011 3
|
||||
#define B0011 3
|
||||
#define B00011 3
|
||||
#define B000011 3
|
||||
#define B0000011 3
|
||||
#define B00000011 3
|
||||
#define B100 4
|
||||
#define B0100 4
|
||||
#define B00100 4
|
||||
#define B000100 4
|
||||
#define B0000100 4
|
||||
#define B00000100 4
|
||||
#define B101 5
|
||||
#define B0101 5
|
||||
#define B00101 5
|
||||
#define B000101 5
|
||||
#define B0000101 5
|
||||
#define B00000101 5
|
||||
#define B110 6
|
||||
#define B0110 6
|
||||
#define B00110 6
|
||||
#define B000110 6
|
||||
#define B0000110 6
|
||||
#define B00000110 6
|
||||
#define B111 7
|
||||
#define B0111 7
|
||||
#define B00111 7
|
||||
#define B000111 7
|
||||
#define B0000111 7
|
||||
#define B00000111 7
|
||||
#define B1000 8
|
||||
#define B01000 8
|
||||
#define B001000 8
|
||||
#define B0001000 8
|
||||
#define B00001000 8
|
||||
#define B1001 9
|
||||
#define B01001 9
|
||||
#define B001001 9
|
||||
#define B0001001 9
|
||||
#define B00001001 9
|
||||
#define B1010 10
|
||||
#define B01010 10
|
||||
#define B001010 10
|
||||
#define B0001010 10
|
||||
#define B00001010 10
|
||||
#define B1011 11
|
||||
#define B01011 11
|
||||
#define B001011 11
|
||||
#define B0001011 11
|
||||
#define B00001011 11
|
||||
#define B1100 12
|
||||
#define B01100 12
|
||||
#define B001100 12
|
||||
#define B0001100 12
|
||||
#define B00001100 12
|
||||
#define B1101 13
|
||||
#define B01101 13
|
||||
#define B001101 13
|
||||
#define B0001101 13
|
||||
#define B00001101 13
|
||||
#define B1110 14
|
||||
#define B01110 14
|
||||
#define B001110 14
|
||||
#define B0001110 14
|
||||
#define B00001110 14
|
||||
#define B1111 15
|
||||
#define B01111 15
|
||||
#define B001111 15
|
||||
#define B0001111 15
|
||||
#define B00001111 15
|
||||
#define B10000 16
|
||||
#define B010000 16
|
||||
#define B0010000 16
|
||||
#define B00010000 16
|
||||
#define B10001 17
|
||||
#define B010001 17
|
||||
#define B0010001 17
|
||||
#define B00010001 17
|
||||
#define B10010 18
|
||||
#define B010010 18
|
||||
#define B0010010 18
|
||||
#define B00010010 18
|
||||
#define B10011 19
|
||||
#define B010011 19
|
||||
#define B0010011 19
|
||||
#define B00010011 19
|
||||
#define B10100 20
|
||||
#define B010100 20
|
||||
#define B0010100 20
|
||||
#define B00010100 20
|
||||
#define B10101 21
|
||||
#define B010101 21
|
||||
#define B0010101 21
|
||||
#define B00010101 21
|
||||
#define B10110 22
|
||||
#define B010110 22
|
||||
#define B0010110 22
|
||||
#define B00010110 22
|
||||
#define B10111 23
|
||||
#define B010111 23
|
||||
#define B0010111 23
|
||||
#define B00010111 23
|
||||
#define B11000 24
|
||||
#define B011000 24
|
||||
#define B0011000 24
|
||||
#define B00011000 24
|
||||
#define B11001 25
|
||||
#define B011001 25
|
||||
#define B0011001 25
|
||||
#define B00011001 25
|
||||
#define B11010 26
|
||||
#define B011010 26
|
||||
#define B0011010 26
|
||||
#define B00011010 26
|
||||
#define B11011 27
|
||||
#define B011011 27
|
||||
#define B0011011 27
|
||||
#define B00011011 27
|
||||
#define B11100 28
|
||||
#define B011100 28
|
||||
#define B0011100 28
|
||||
#define B00011100 28
|
||||
#define B11101 29
|
||||
#define B011101 29
|
||||
#define B0011101 29
|
||||
#define B00011101 29
|
||||
#define B11110 30
|
||||
#define B011110 30
|
||||
#define B0011110 30
|
||||
#define B00011110 30
|
||||
#define B11111 31
|
||||
#define B011111 31
|
||||
#define B0011111 31
|
||||
#define B00011111 31
|
||||
#define B100000 32
|
||||
#define B0100000 32
|
||||
#define B00100000 32
|
||||
#define B100001 33
|
||||
#define B0100001 33
|
||||
#define B00100001 33
|
||||
#define B100010 34
|
||||
#define B0100010 34
|
||||
#define B00100010 34
|
||||
#define B100011 35
|
||||
#define B0100011 35
|
||||
#define B00100011 35
|
||||
#define B100100 36
|
||||
#define B0100100 36
|
||||
#define B00100100 36
|
||||
#define B100101 37
|
||||
#define B0100101 37
|
||||
#define B00100101 37
|
||||
#define B100110 38
|
||||
#define B0100110 38
|
||||
#define B00100110 38
|
||||
#define B100111 39
|
||||
#define B0100111 39
|
||||
#define B00100111 39
|
||||
#define B101000 40
|
||||
#define B0101000 40
|
||||
#define B00101000 40
|
||||
#define B101001 41
|
||||
#define B0101001 41
|
||||
#define B00101001 41
|
||||
#define B101010 42
|
||||
#define B0101010 42
|
||||
#define B00101010 42
|
||||
#define B101011 43
|
||||
#define B0101011 43
|
||||
#define B00101011 43
|
||||
#define B101100 44
|
||||
#define B0101100 44
|
||||
#define B00101100 44
|
||||
#define B101101 45
|
||||
#define B0101101 45
|
||||
#define B00101101 45
|
||||
#define B101110 46
|
||||
#define B0101110 46
|
||||
#define B00101110 46
|
||||
#define B101111 47
|
||||
#define B0101111 47
|
||||
#define B00101111 47
|
||||
#define B110000 48
|
||||
#define B0110000 48
|
||||
#define B00110000 48
|
||||
#define B110001 49
|
||||
#define B0110001 49
|
||||
#define B00110001 49
|
||||
#define B110010 50
|
||||
#define B0110010 50
|
||||
#define B00110010 50
|
||||
#define B110011 51
|
||||
#define B0110011 51
|
||||
#define B00110011 51
|
||||
#define B110100 52
|
||||
#define B0110100 52
|
||||
#define B00110100 52
|
||||
#define B110101 53
|
||||
#define B0110101 53
|
||||
#define B00110101 53
|
||||
#define B110110 54
|
||||
#define B0110110 54
|
||||
#define B00110110 54
|
||||
#define B110111 55
|
||||
#define B0110111 55
|
||||
#define B00110111 55
|
||||
#define B111000 56
|
||||
#define B0111000 56
|
||||
#define B00111000 56
|
||||
#define B111001 57
|
||||
#define B0111001 57
|
||||
#define B00111001 57
|
||||
#define B111010 58
|
||||
#define B0111010 58
|
||||
#define B00111010 58
|
||||
#define B111011 59
|
||||
#define B0111011 59
|
||||
#define B00111011 59
|
||||
#define B111100 60
|
||||
#define B0111100 60
|
||||
#define B00111100 60
|
||||
#define B111101 61
|
||||
#define B0111101 61
|
||||
#define B00111101 61
|
||||
#define B111110 62
|
||||
#define B0111110 62
|
||||
#define B00111110 62
|
||||
#define B111111 63
|
||||
#define B0111111 63
|
||||
#define B00111111 63
|
||||
#define B1000000 64
|
||||
#define B01000000 64
|
||||
#define B1000001 65
|
||||
#define B01000001 65
|
||||
#define B1000010 66
|
||||
#define B01000010 66
|
||||
#define B1000011 67
|
||||
#define B01000011 67
|
||||
#define B1000100 68
|
||||
#define B01000100 68
|
||||
#define B1000101 69
|
||||
#define B01000101 69
|
||||
#define B1000110 70
|
||||
#define B01000110 70
|
||||
#define B1000111 71
|
||||
#define B01000111 71
|
||||
#define B1001000 72
|
||||
#define B01001000 72
|
||||
#define B1001001 73
|
||||
#define B01001001 73
|
||||
#define B1001010 74
|
||||
#define B01001010 74
|
||||
#define B1001011 75
|
||||
#define B01001011 75
|
||||
#define B1001100 76
|
||||
#define B01001100 76
|
||||
#define B1001101 77
|
||||
#define B01001101 77
|
||||
#define B1001110 78
|
||||
#define B01001110 78
|
||||
#define B1001111 79
|
||||
#define B01001111 79
|
||||
#define B1010000 80
|
||||
#define B01010000 80
|
||||
#define B1010001 81
|
||||
#define B01010001 81
|
||||
#define B1010010 82
|
||||
#define B01010010 82
|
||||
#define B1010011 83
|
||||
#define B01010011 83
|
||||
#define B1010100 84
|
||||
#define B01010100 84
|
||||
#define B1010101 85
|
||||
#define B01010101 85
|
||||
#define B1010110 86
|
||||
#define B01010110 86
|
||||
#define B1010111 87
|
||||
#define B01010111 87
|
||||
#define B1011000 88
|
||||
#define B01011000 88
|
||||
#define B1011001 89
|
||||
#define B01011001 89
|
||||
#define B1011010 90
|
||||
#define B01011010 90
|
||||
#define B1011011 91
|
||||
#define B01011011 91
|
||||
#define B1011100 92
|
||||
#define B01011100 92
|
||||
#define B1011101 93
|
||||
#define B01011101 93
|
||||
#define B1011110 94
|
||||
#define B01011110 94
|
||||
#define B1011111 95
|
||||
#define B01011111 95
|
||||
#define B1100000 96
|
||||
#define B01100000 96
|
||||
#define B1100001 97
|
||||
#define B01100001 97
|
||||
#define B1100010 98
|
||||
#define B01100010 98
|
||||
#define B1100011 99
|
||||
#define B01100011 99
|
||||
#define B1100100 100
|
||||
#define B01100100 100
|
||||
#define B1100101 101
|
||||
#define B01100101 101
|
||||
#define B1100110 102
|
||||
#define B01100110 102
|
||||
#define B1100111 103
|
||||
#define B01100111 103
|
||||
#define B1101000 104
|
||||
#define B01101000 104
|
||||
#define B1101001 105
|
||||
#define B01101001 105
|
||||
#define B1101010 106
|
||||
#define B01101010 106
|
||||
#define B1101011 107
|
||||
#define B01101011 107
|
||||
#define B1101100 108
|
||||
#define B01101100 108
|
||||
#define B1101101 109
|
||||
#define B01101101 109
|
||||
#define B1101110 110
|
||||
#define B01101110 110
|
||||
#define B1101111 111
|
||||
#define B01101111 111
|
||||
#define B1110000 112
|
||||
#define B01110000 112
|
||||
#define B1110001 113
|
||||
#define B01110001 113
|
||||
#define B1110010 114
|
||||
#define B01110010 114
|
||||
#define B1110011 115
|
||||
#define B01110011 115
|
||||
#define B1110100 116
|
||||
#define B01110100 116
|
||||
#define B1110101 117
|
||||
#define B01110101 117
|
||||
#define B1110110 118
|
||||
#define B01110110 118
|
||||
#define B1110111 119
|
||||
#define B01110111 119
|
||||
#define B1111000 120
|
||||
#define B01111000 120
|
||||
#define B1111001 121
|
||||
#define B01111001 121
|
||||
#define B1111010 122
|
||||
#define B01111010 122
|
||||
#define B1111011 123
|
||||
#define B01111011 123
|
||||
#define B1111100 124
|
||||
#define B01111100 124
|
||||
#define B1111101 125
|
||||
#define B01111101 125
|
||||
#define B1111110 126
|
||||
#define B01111110 126
|
||||
#define B1111111 127
|
||||
#define B01111111 127
|
||||
#define B10000000 128
|
||||
#define B10000001 129
|
||||
#define B10000010 130
|
||||
#define B10000011 131
|
||||
#define B10000100 132
|
||||
#define B10000101 133
|
||||
#define B10000110 134
|
||||
#define B10000111 135
|
||||
#define B10001000 136
|
||||
#define B10001001 137
|
||||
#define B10001010 138
|
||||
#define B10001011 139
|
||||
#define B10001100 140
|
||||
#define B10001101 141
|
||||
#define B10001110 142
|
||||
#define B10001111 143
|
||||
#define B10010000 144
|
||||
#define B10010001 145
|
||||
#define B10010010 146
|
||||
#define B10010011 147
|
||||
#define B10010100 148
|
||||
#define B10010101 149
|
||||
#define B10010110 150
|
||||
#define B10010111 151
|
||||
#define B10011000 152
|
||||
#define B10011001 153
|
||||
#define B10011010 154
|
||||
#define B10011011 155
|
||||
#define B10011100 156
|
||||
#define B10011101 157
|
||||
#define B10011110 158
|
||||
#define B10011111 159
|
||||
#define B10100000 160
|
||||
#define B10100001 161
|
||||
#define B10100010 162
|
||||
#define B10100011 163
|
||||
#define B10100100 164
|
||||
#define B10100101 165
|
||||
#define B10100110 166
|
||||
#define B10100111 167
|
||||
#define B10101000 168
|
||||
#define B10101001 169
|
||||
#define B10101010 170
|
||||
#define B10101011 171
|
||||
#define B10101100 172
|
||||
#define B10101101 173
|
||||
#define B10101110 174
|
||||
#define B10101111 175
|
||||
#define B10110000 176
|
||||
#define B10110001 177
|
||||
#define B10110010 178
|
||||
#define B10110011 179
|
||||
#define B10110100 180
|
||||
#define B10110101 181
|
||||
#define B10110110 182
|
||||
#define B10110111 183
|
||||
#define B10111000 184
|
||||
#define B10111001 185
|
||||
#define B10111010 186
|
||||
#define B10111011 187
|
||||
#define B10111100 188
|
||||
#define B10111101 189
|
||||
#define B10111110 190
|
||||
#define B10111111 191
|
||||
#define B11000000 192
|
||||
#define B11000001 193
|
||||
#define B11000010 194
|
||||
#define B11000011 195
|
||||
#define B11000100 196
|
||||
#define B11000101 197
|
||||
#define B11000110 198
|
||||
#define B11000111 199
|
||||
#define B11001000 200
|
||||
#define B11001001 201
|
||||
#define B11001010 202
|
||||
#define B11001011 203
|
||||
#define B11001100 204
|
||||
#define B11001101 205
|
||||
#define B11001110 206
|
||||
#define B11001111 207
|
||||
#define B11010000 208
|
||||
#define B11010001 209
|
||||
#define B11010010 210
|
||||
#define B11010011 211
|
||||
#define B11010100 212
|
||||
#define B11010101 213
|
||||
#define B11010110 214
|
||||
#define B11010111 215
|
||||
#define B11011000 216
|
||||
#define B11011001 217
|
||||
#define B11011010 218
|
||||
#define B11011011 219
|
||||
#define B11011100 220
|
||||
#define B11011101 221
|
||||
#define B11011110 222
|
||||
#define B11011111 223
|
||||
#define B11100000 224
|
||||
#define B11100001 225
|
||||
#define B11100010 226
|
||||
#define B11100011 227
|
||||
#define B11100100 228
|
||||
#define B11100101 229
|
||||
#define B11100110 230
|
||||
#define B11100111 231
|
||||
#define B11101000 232
|
||||
#define B11101001 233
|
||||
#define B11101010 234
|
||||
#define B11101011 235
|
||||
#define B11101100 236
|
||||
#define B11101101 237
|
||||
#define B11101110 238
|
||||
#define B11101111 239
|
||||
#define B11110000 240
|
||||
#define B11110001 241
|
||||
#define B11110010 242
|
||||
#define B11110011 243
|
||||
#define B11110100 244
|
||||
#define B11110101 245
|
||||
#define B11110110 246
|
||||
#define B11110111 247
|
||||
#define B11111000 248
|
||||
#define B11111001 249
|
||||
#define B11111010 250
|
||||
#define B11111011 251
|
||||
#define B11111100 252
|
||||
#define B11111101 253
|
||||
#define B11111110 254
|
||||
#define B11111111 255
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user