Главная  Микроконтроллеры 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [ 41 ] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

void main(void) {

Переменная для хранения результата преобразования unsigned п;

Инициализация портов ввода/вывода

Port А

DDRA=OxOO:

PORTA=OxOO;

Port В

Линия /SS установлена на вывод информации

на уровне 1, это необходимо для работы

SPI-порта в режиме мастер

DDRB=0xA3:

P0RTB=0x12:

Port С DDRC=OxOO; PORTC=OxOO;

Port D DDRD=OxOO; PORTD=OxOO;

Инициализация UART (интерфейс RS-232)

Параметры интерфейса: 8 битов данных, 1 стоп бит, без проверки четности приемник UART: отключен передатчик UART: включен UCR=0xe8;

Скорость передачи данных: 9600 UBRR=0x19,

Инициализация SPI

Режим работы SPI: мастер

Тактовая частота SPI: 1000 ООО кГц

Порядок передачи данных: младший бит первый SPCR=0x50;

putsf("MAX1241 Demo using the CodeVisionAVR С Compiler"); putsf (""•"""......................................\n-);

Произвести аналого-цифровое преобразование и передать результаты через интерфейс RS-232 while (1) {

n=max1241 read();

printf("HAX1241-> N=%4u U=%4umV\r\n",n,(unsigned) ((long) n.VREF/4096));

0.3 sec. delay

delay ms(300);

>;



Использование ЖК-иидикатора МТ10Т7-7

Микроконгроллер: AT90S8535-8PI. Кварцевый резонатор: 4 МГц. Подсоединение индикатора к порту Port С:

МАХ1241

PORTC AT90S8535 DIP 40

5 27

4 26

0 22

1 23

2 24

3 25

Текст программы:

void delay(void) {

asmCdell: Idi г24,0х0Г); asmCdl: dec г24"); asmCbrne dl"); asmCdec r25"); asmCbrne dell");

>

void STR0B WR1(vold) {

asm("sbi 0x18.5"); delayO;

asiii("cbi 0x18,5");

>

void STR0B ADR(void)

asin{"cbi 0x18,4"); delayO;

asm("sbi 0x18,5"); delayO;

asm("cbi 0x18,5"); delayO;

asiii{"sbi 0x18,4");

void Set Bus(unsigned char A)

If ((A&0x01)==0x01) asm("sbi 0x18,0");

else asm("cbi 0x18,0");

if ((A&0x02)==0x02) asmCsbi 0x18,1");



else asmCcbi 0x18.1"):

if ((А&0х04)==0х04) asmCsbi 0x18.2");

else asmCcbi 0x18,2");

if ((A&0x08)==0xOB) asm("sbi 0x18,3");

else asm("cbi 0x18,3");

>

void Init LCD(void) {

unsigned char temp; Set Bus(0x0f); STR0B ADR(); Set Bus(0x01); STR0B WR1();

Set Bus(0); STR0B ADR();

for (temp=0;temp<20;temp++) STR0B WR1();

>

unsigned char code7(unsigned char code) {

switch(code) {

case 0: return Oxee; case 1: return 0x60; case 2: return 0x2f; case 3: return 0x6d; case 4: return Oxel; case 5: return Oxcd; case 6: return Oxcf; case 7: return 0x68; case 8: return Oxef; case 9: return Oxed; case 10: return 0;

>

return 0; >

void out(unsigned char num) {

num=code7(num); Set Bus(num); STR0B WR1(); delayO;

asin("swap %num"); Set Bus(num); STR0B WR1(); delayO;



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [ 41 ] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

0.0008