Перейти к содержанию

LiSiY5

Members
  • Постов

    9
  • Зарегистрирован

  • Посещение

Весь контент LiSiY5

  1. Может у кого то есть мануал на русском для компилятора xc8? Не могу найти нормальную ссылку...
  2. LiSiY5

    Переходы в программе

    Работаю в Mplab X 5.40, написал основной код программы для Pic16 на Си и есть небольшой код на ассемблере. Так вот, подскажите как правильно сделать переход на подпрограмму с Си на ассемблер и назад. Может на каком либо примере где-то есть. Заранее всем спасибо.
  3. LiSiY5

    Не стартует Pic16F877A

    Помогите пожалуйста, что может быть? Код написан на ассемблере, симулятор работает, все ОК. Прошиваю и нет реакции на смену 1/0 на входах. Выхода работают, моргают, а вход никак. Код с конфигурацией прилогаю, Help me please))) LIST p=16F877A __CONFIG 3F4Eh; кварц 20MHz ;=============================================================================================== ; Определение положения регистров специального назначения. ;=============================================================================================== OPTION_REG equ 80h Status equ 03h ; Регистр Status. PortA equ 05h ; Регистр PortA. TrisA equ 85h ; Регистр TrisA - банк 1. PortB equ 06h ; Регистр PortB. TrisB equ 86h ; Регистр TrisB - банк 1. IntCon equ 0Bh ; Регистр IntCon. ADCON0 equ 1Fh ; Регистр установок компаратора ;=============================================================================================== ; Определение названия и положения регистров общего назачения. ;=============================================================================================== SecH_1 equ 20h ; старший разряд счетчика SecL_1 equ 21h ; младший разряд счетчика but equ 22h ;============================================================================================= ; Точка входа в программу. ;============================================================================================= org 0 ; Начать выполнение программы goto Start1 ; с подпрограммы START. ;============================================================================================= ; Инициализация порта А ;============================================================================================= Start1 clrf PortA ; очистить порт А movlw .7 ; Выключить компараторы и активировать порты входа-выхода movwf ADCON0 ; bsf Status,5 ; Установить банк 1. movlw 3FH ; портА работает на вход movwf TrisA ; входы 6,7 работают в режиме генератора ;============================================================================================= ; Инициализация порта B ;============================================================================================= clrf TrisB ; портВ работает на выход movlw 0 ; Включить подтягивающие резисторы порта В. movwf OPTION_REG ; На входе INT прерывания - по заднему фронту. bcf Status,5 ; Установить банк 0. bcf Status,6 ; Установить банк 0. ;-------------------------------------------------------------------------------------------- ; анализ кнопки ;-------------------------------------------------------------------------------------------- Start clrwdt btfsc PortA,1 ; eсли А1=1 bsf but,0 btfsc PortA,2 bcf but,0 btfsc but,0 goto pusk goto Start pusk bsf PortB,0 ; включить В0 call zad50 bcf PortB,0 ; выключить В0 call zad50 goto Start ;-------------------------------------------------------------------------------------------- ; задержка 50 мс ;-------------------------------------------------------------------------------------------- zad50 movlw .244 ; Закладка в регистр W константы .244 movwf SecH_1 ; Копирование константы .244 из регистра W в регистр SecH_1. movlw .173 ; Закладка в регистр W константы .173 movwf SecL_1 ; Копирование константы .173 из регистра W в регистр SecL_1. PAUSE_D clrwdt ; Сброс сторожевого таймера WDT decfsz SecL_1,F ; Декремент содержимого младшего разряда счетчика SecL_1 goto PAUSE_D ; Если результат декремента не=0, то переход в ПП PAUSE_D. decfsz SecH_1,F ; Если результат декремента =0, то инкремент старшего разряда счетчика SecH_1 goto PAUSE_D ; Если результат инкремента не=0, то переход в ПП PAUSE_D. return ; Если результат инкремента =0, то программа исполняется далее. end ;конец
  4. Разрешите объяснить, Я хочу полный код под мои конфигурационные биты на Pic16f877a. Мне необходимо получить переменную, назовем ADC, которая меняет значение от 0 до 1023, при изменении напряжения на входе AN0 от 0В до 5В. Далее сравнивая переменную с задаными const постараюсь получить на выходе то что задумано. Не судите строго, после перенесенного менингита сложно все вспоминаеться...
  5. Задачка стала по-сложнее, надо организовать АЦП преобразователь, кто то работал? Подскажите, а то с Google не могу договориться. Исходные конфигурационные данные и обвязку прилагаю(работа: по изменению потенциала на AN0 меняются выходы RB0-RB7). Всем спасибо за помощь. // PIC16F877A Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #define _XTAL_FREQ 20000000 ADC.PDF
  6. Спрыгиваю на более простой МК PIC16F877A, использую програматор РicKit3, компилятор ХС8, программа MPLAB X IDE, биты конфигурации: // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (Power-up Timer is enabled) #pragma config CP = OFF Хочу программу, при RA0==1 включается RB0=1. Подскажите пожалуйста.
  7. Увы не получается, может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами. Первый код хочу по входу А0 включается выход В0.
  8. Ребята помогите, Я начинаю изучение Pic и не могу создать первую прогу. Сам программирую на LD, FBD, ASM, но тут не могу стартонуть, с выходами все получается, а вот с входами проблемка. Есть код на Си, подскажите в чем ошибка. Буду очень благодарен любой информации. // PIC16F18877 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FEXTOSC = HS // External Oscillator mode selection bits (HS (crystal oscillator) above 4MHz; PFM set to high power) #pragma config RSTOSC = EXT1X // Power-up default value for COSC bits (EXTOSC operating per FEXTOSC bits) #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2) #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled) // CONFIG2 #pragma config MCLRE = ON // Master Clear Enable bit (MCLR pin is Master Clear function) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config LPBOREN = OFF // Low-Power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices) #pragma config ZCD = OFF // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.) #pragma config PPS1WAY = ON // Peripheral Pin Select one-way control (The PPSLOCK bit can be cleared and set only once in software) #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset) // CONFIG3 #pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS) #pragma config WDTE = ON // WDT operating mode (WDT enabled regardless of sleep; SWDTEN ignored) #pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required) #pragma config WDTCCS = SC // WDT input clock selector (Software Control) // CONFIG4 #pragma config WRT = OFF // UserNVM self-write protection bits (Write protection off) #pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use) #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/Vpp pin function is MCLR.) // CONFIG5 #pragma config CP = OFF // UserNVM Program memory code protection bit (Program Memory code protection disabled) #pragma config CPD = OFF // DataNVM code protection bit (Data EEPROM code protection disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #define _XTAL_FREQ 20000000 void main(void) { TRISB=0; PORTB=0; TRISA=11111111; PORTA=11111111; TRISA=11111111; if(PORTAbits.RA0 == 1) { RB0 = 1;} return; }
×
×
  • Создать...