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

[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) {

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

Все выводы порта PORTB насгроены на вывод информации

DDRB=Oxff;

Включить первый светодиод PORTB=led status,

Инициализация таймера TIMER 1

Таймер riHERI отсоединен or линии ОСЛ

не включен режим широтно-импульсной модуляции PWH

TCf;R1A=0;

Частота таймера T1MER1 xtal/10?4

Бегущий огонь на светодиодах

Материал взят из демонстрационной версии компилятора Code-VisionAVR С Compiler, автором которого являегся Pavel Haiduc, HP InfoTech S.R.L.

8 светодиодов соединены с выходами порта PORTB и +5 В через резисторы сопротивлением 270 Ом, ограничиваюпще ток. Аноды светодиодов соединены с линией +5 В.

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

Определение регистров ввода-вывода дли AT90S8515 Kinciude <90sS5.5.h>

Частота кварцевого резонатора [Гц] Mefine xtal 4000000

Частота переключения светодиодов [Гц] ((define fmove 2

Включить светодиод на линии О порта PORTS unsigned char led statLS=Oxfe;

Процедура обработки прерывания по переполнению таймера TIHER1 вызывается каждые 0,5с

interrupt [TIH1 0VF] \oid timerl overflow(void) {

preset again TIHER1 TCNT1=0x10000-(xtal/1024/fmove); move the LEO led status«=l; led status=1;

If (led status==Oxff) led status=Oxfe; turn on the LED PORTB=led status:



TCCR1B=5;

Предустановим значение таймера TIMER1

TCNT1=0x10000-(xtal/1024/fmove);

Очистить флаги прерываний по таймеру TIHER1

TIFR=0:

Разрешить прерывания по переполнению таймера riHERI TIMSK=0x80;

Все остальные виды прерываний запрещены GIHSK=0:

Разрешение глобальных прерываний Kasm sei (tendasm

Бесконечный цикл, при этом возможно возникновение прерываний по переполнению таймера TIHER1 while (1); >

Цифровой вольтметр с использованием АЦП фирмы Maxim типа МАХ1241

Измеренное значение передается с помощью интерфейса RS232. Параметры интерфейса: 9600 8N1.

Материал взят из демонстрационной версии компилятора CodeVisionAVR С Compiler, автором которого является Pavel Haiduc, HP InfoTech S.R.L.

Частота кварцевого резонатора: 4,000 МГц.

Подсоединение МАХ1241 к AT90S8515.

МАХ 1241 AT90S8515-8PI

1 VDD=5V

2 Vin -

3 /SHD - 1 РВО

4 REF=5V -

5 GND - 20 GND

6 DOUT - 7 MISO

7 /CS - 2 PBI

8 SCLK - 8 SCK



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

((Include <90s8515.h>

Стандаргная библиотека ввода/вывода ((include <stdio.h>

Библиотека SPI-функций ((include <spi.h>

Библиотека для формирования задержек ((include <delay.h>

Опорное напряжение для МАХ1241 [мВ] ((define VREF 5000

Определение управляющих сигналов для НАХ1241 ((define NSHON PORTB. О ((define NCS PORTB. 1 ((define DOUT PINB. 6

union adcu {

unsigned char byte[2]; unsigned int word; >;

Произвести одно аналого-цифровое преобразование и вернуть его результат unsigned int max1241 read(void) {

union adcu adc data;

Вывести микросхему HAX1241 из режима shutdown NSHDN=1;

Подождать 5 мкс для приведения МАХ1241 в рабочее состояние delay us(5);

Теперь выбрать чип для начала преобразования NCS=0;

«(дать, пока преобразование не завершится DOIT будет равен О в процессе преобразования while (DOUT==0);

D01T=1 -> преобразование завершено

Прочитать младший байт (MSB)

adc data.byte[l3=spi(0);

Прочитать старший байт (LSB)

adc data.byte[0]=spi(0);

Снять сигнал выбора чипа

NCS=i:

Перевести АЦП в режим shutdown NSHDN=0:

Форматировать результат преобразования и возврат результата

return (adc data.word»3)&0xfff;

>



[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.0009