Пт дек 01, 2017 11:58:44
Пт дек 01, 2017 17:31:49
Сб дек 02, 2017 08:01:30
Сб дек 02, 2017 09:26:30
Пт дек 08, 2017 20:29:42
// Подключение нужных библиотек
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
// Параметры микроконтроллера
#define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц
// Параметры сигнала
#define SIGNAL 30 // Длительность сигнала в мкс
#define DELMIN 100 // Максимальная задержка в мкс
#define DELMAX 400000 // Максимальная задержка в мкс
// Обознаение выводов и кнопок
#define BUTTON RA0 // Кнопка МК
#define LED RA1 // Вывод на светодиоды
#define GREEN 0 // Сигнал для зеленого светодиода
#define RED 1 // Сигнал для красного светодиода
#define GENERATOR RA2 // Выход генератора
// PIC10F322 Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = INTOSC // Oscillator Selection bits (EC: CLKIN function enabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = ON // Code Protection bit (Program memory code protection is enabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled)
#pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
void Prepare(); // Функция подготовки МК
int main()
{
Prepare(); // Запуск функции подготовки
int K = 4;
while(1) // Бесконечный цикл работы
{
if(BUTTON == 1) // Проверка на нажатые кнопки
{
LED = GREEN; // Зажигаем зеленый светодиод
//srand(K); // Инициализация генератора случайных импульсов
//K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
//for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
__delay_us(SIGNAL-4); // Определяем задержку
GENERATOR = 1; // Подаем на выход лог. единицу
__delay_us(SIGNAL-2); // Определяем длительность сигнала
GENERATOR = 0; // Подаем на выход лог. ноль
}
else
{
LED = RED; // Зажигаем красный светодиод
GENERATOR = 0; // На выход ставил лог. ноль
}
}
return 0;
}
// Функция подготовки
void Prepare()
{
TRISA = 0b1001; // Направление работы ножек порта А (вход)
PORTA = 0b0000; // очищаем порт А
OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
ANSELA = 0; // Отключение аналоговой части
}
17: // Подключение нужных библиотек
18: #include <stdio.h>
19: #include <stdlib.h>
20: #include <xc.h>
21:
22: // Параметры микроконтроллера
23: #define _XTAL_FREQ 16000000 // Тактовая частота 4 МГц
24:
25: // Параметры сигнала
26: #define SIGNAL 30 // Длительность сигнала в мкс
27: #define DELMIN 100 // Максимальная задержка в мкс
28: #define DELMAX 400000 // Максимальная задержка в мкс
29:
30: // Обознаение выводов и кнопок
31: #define BUTTON RA0 // Кнопка МК
32: #define LED RA1 // Вывод на светодиоды
33: #define GREEN 0 // Сигнал для зеленого светодиода
34: #define RED 1 // Сигнал для красного светодиода
35: #define GENERATOR RA2 // Выход генератора
36:
37: // PIC10F322 Configuration Bit Settings
38:
39: // 'C' source line config statements
40:
41: // CONFIG
42: #pragma config FOSC = INTOSC // Oscillator Selection bits (EC: CLKIN function enabled)
43: #pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
44: #pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled)
45: #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
46: #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
47: #pragma config CP = ON // Code Protection bit (Program memory code protection is enabled)
48: #pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled)
49: #pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled)
50: #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
51: #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
52:
53: // #pragma config statements should precede project file includes.
54: // Use project enums instead of #define for ON and OFF.
55:
56: void Prepare(); // Функция подготовки МК
57:
58: int main()
59: {
60: Prepare(); // Запуск функции подготовки
01E8 21DD CALL 0x1DD
61: int K = 4;
01E9 3004 MOVLW 0x4
01EA 00C2 MOVWF K
01EB 3000 MOVLW 0x0
01EC 00C3 MOVWF 0x43
62: while(1) // Бесконечный цикл работы
63: {
64: if(BUTTON == 1) // Проверка на нажатые кнопки
01ED 29FA GOTO 0x1FA
01FA 1805 BTFSC PORTA, 0x0
01FB 29EE GOTO 0x1EE
65: {
66: LED = GREEN; // Зажигаем зеленый светодиод
01EE 1085 BCF PORTA, 0x1
67: //srand(K); // Инициализация генератора случайных импульсов
68: //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа
69: //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки
70: __delay_us(SIGNAL-4); // Определяем задержку
01EF 3022 MOVLW 0x22
01F0 00C1 MOVWF 0x41
01F1 0BC1 DECFSZ 0x41, F
01F2 29F1 GOTO 0x1F1
01F3 0000 NOP
71: GENERATOR = 1; // Подаем на выход лог. единицу
01F4 1505 BSF PORTA, 0x2
72: __delay_us(SIGNAL-2); // Определяем длительность сигнала
01F5 3025 MOVLW 0x25
01F6 00C1 MOVWF 0x41
01F7 0BC1 DECFSZ 0x41, F
01F8 29F7 GOTO 0x1F7
73: GENERATOR = 0; // Подаем на выход лог. ноль
01F9 1105 BCF PORTA, 0x2
74: }
75: else
76: {
77: LED = RED; // Зажигаем красный светодиод
01FC 1485 BSF PORTA, 0x1
01FD 29F9 GOTO 0x1F9
78: GENERATOR = 0; // На выход ставил лог. ноль
79: }
80: }
81: return 0;
82: }
83:
84: // Функция подготовки
85: void Prepare()
86: {
87: TRISA = 0b1001; // Направление работы ножек порта А (вход)
01DD 3009 MOVLW 0x9
01DE 0086 MOVWF TRISA
88: PORTA = 0b0000; // очищаем порт А
01DF 0185 CLRF PORTA
89: OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
01E0 3070 MOVLW 0x70
01E1 0090 MOVWF OSCCON
90: WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP
01E2 30F0 MOVLW 0xF0
01E3 00C0 MOVWF __pcstackBANK0
01E4 0840 MOVF __pcstackBANK0, W
01E5 0589 ANDWF WPUA, F
91: ANSELA = 0; // Отключение аналоговой части
01E6 0188 CLRF ANSELA
92: }
01E7 0008 RETURN
Пт дек 08, 2017 20:48:04
Пт дек 08, 2017 20:59:36
Пт дек 08, 2017 21:18:19
Пт дек 08, 2017 21:19:46
Пт дек 08, 2017 21:27:49
Пт дек 08, 2017 21:36:00
Пт дек 08, 2017 21:56:06
Пн дек 11, 2017 15:41:16
Пн дек 11, 2017 15:50:11
Пт дек 15, 2017 19:48:13
/*
* File: newmain.c
* Author: newbi
*
* Created on 15 декабря 2017 г., 15:44
*/
// Подключаем библиотеки
#include <stdio.h> // Стандартная библиотека Си для ввода-вывода
#include <stdlib.h> // Стандартная библиотека Си для контроля
#include <xc.h> // Библиотека компилятора XC8 для работы с PIC
// Определение параметров микроконтроллера
#define _XTAL_FREQ 16000000 // Тактовая частота 16 МГц (см. OSCCON)
// Определение параметров для подключение периферии
#define KEYBOARD RA0 // Определяем порт для подключения клавиатуры через АЦП
// ВАЖНО: ПОРТ ДОЛЖЕН ПОДДЕРЖИВАТЬ АНАЛОГОВЫЕ СИГНАЛЫ (НАЗЫВАТЬСЯ AN)
// Объявляем используемые функции
void Prepare();
volatile unsigned char chislo = 0;
volatile int g_bStat = 0;
int main()
{
Prepare();
while(1)
{
if((chislo >= 1) && (g_bStat))
{
RC7 = 1;
}
else
{
RC7 = 0;
}
}
return 0;
}
// Функция подготовки (настройки) параметров МК
void Prepare()
{
//TRISA = 0b1100; // Направление работы ножек порта А (вход)
//PORTA = 0b0000; // Очистка порта A
OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
ADCON1bits.VCFG0 = 0;
ADCON1bits.VCFG1 = 0;
// Настройка опорного напряжения VREF+ в 2,048 В
TRISA = 0b1111111; // Вход
TRISC = 0b0000000; // Выход
ANSEL0 = 1; // AN0 как аналоговый вход
ADCON0bits.CHS4 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS3 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS2 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS1 = 0; // Настройка входа АЦП (AN0)
ADCON2bits.ADFM = 0;
ADCON2bits.ACQT = 0b00000111; // Время ACQT = 20TAD (33us/4.1us)
ADCON0bits.ADON = 1; // Включили модуль АЦП
PIR1bits.ADIF = 0; // Сброс прерываний АЦП
PIE1bits.ADIE = 1; // Разрешили прерывание АЦП
}
// Функция обработки прерывания
void interrupt isr (void)
{
// ---------- Прерывание АЦП ----------
if (PIR1bits.ADIF && PIE1bits.ADIE) // Обработали прерывание от AD (АЦП)
{
LATCbits.LATC1 = 0; // Метка конца преобразования
PIR1bits.ADIF = 0; // Сброс прерывания АЦП
chislo = 5/(256*ADRESH);
g_bStat = 1;
} // if (PIR1bits.ADIF && PIE1bits.ADIE)
} // high_isr END
Пт дек 15, 2017 20:08:40
Пт дек 15, 2017 20:37:16
/*
* File: newmain.c
* Author: newbi
*
* Created on 15 декабря 2017 г., 15:44
*/
// Подключаем библиотеки
#include <stdio.h> // Стандартная библиотека Си для ввода-вывода
#include <stdlib.h> // Стандартная библиотека Си для контроля
#include <xc.h> // Библиотека компилятора XC8 для работы с PIC
// Определение параметров микроконтроллера
#define _XTAL_FREQ 16000000 // Тактовая частота 16 МГц (см. OSCCON)
// Определение параметров для подключение периферии
#define KEYBOARD AN0 // Определяем порт для подключения клавиатуры через АЦП
// ВАЖНО: ПОРТ ДОЛЖЕН ПОДДЕРЖИВАТЬ АНАЛОГОВЫЕ СИГНАЛЫ (НАЗЫВАТЬСЯ AN)
// Объявляем используемые функции
void Prepare();
//volatile
unsigned char chislo = 0;
unsigned int g_bStat = 0;
int main()
{
Prepare();
while(1)
{
if(!ADCON0bits.GO)
{
chislo = 5/(256*ADRESH);
if(chislo > 0)
{
RC7 = 1;
__delay_ms(10);
ADCON0bits.GO = 1 ; // Метка начала преобразования
}
else
{
RC7 = 0;
__delay_ms(10);
ADCON0bits.GO = 1 ; // Метка начала преобразования
}
}
}
return 0;
}
// Функция подготовки (настройки) параметров МК
void Prepare()
{
OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz
ADCON1bits.VCFG0 = 0; // Установка опорного напряжения
ADCON1bits.VCFG1 = 0; // Установка опорного напряжения
TRISA = 0b1111111; // Ножки RA0 - R7 - вход
TRISC = 0b0000000; // Ножки RC0-RC7 - выход
ANCON0 = 1; // AN как аналоговый входы
ADCON2bits.ACQT=1; // 2 = 4TAD
ADCON2bits.ADCS=2; // FOSC/32
ADCON0bits.CHS4 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS3 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS2 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS1 = 0; // Настройка входа АЦП (AN0)
ADCON0bits.CHS0 = 0; // Настройка входа АЦП (AN0)
ADCON2bits.ADFM = 0; // Левое выравынивание
ADCON0bits.ADON = 1; // Включили модуль АЦП
PIR1bits.ADIF = 0; // Сброс прерываний АЦП
PIE1bits.ADIE = 0; // Разрешили прерывание АЦП
INTCONbits.PEIE = 0; // Периферийные прерывания разрешены
INTCONbits.GIE = 0; // Глобальные прерывания разрешены
ADCON0bits.GO = 1 ; // Метка начала преобразования
}
// Функция обработки прерывания
/*void interrupt isr (void)
{
// ---------- Прерывание АЦП ----------
if (PIR1bits.ADIF && PIE1bits.ADIE) // Обработали прерывание от AD (АЦП)
{
LATAbits.LATA0 = 0; // Метка конца преобразования
PIR1bits.ADIF = 0; // Сброс прерывания АЦП
chislo = 5/(256*ADRESH);
g_bStat = 1;
}
ADCON0bits.GO = 0 ; // Метка начала преобразования
} */
Сб дек 16, 2017 06:03:22
Сб дек 16, 2017 06:31:09
chislo = 5*ADRESH/(256);
Сб дек 16, 2017 17:15:38