Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 18.11.2013, 21:41  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
Вопрос PIC16f676

Здравствуйте, уважаемые! Не могу разобраться, где я ощибся...Делаю вольтметр(чтобы научиться работать с АЦП), вроде все в норме, не могу найти ошибку, вощем когда залил код в микруху, но показывает не цифры, а какието иероглифы. Потом пробывал в протеусе, но там показывает ошибку(см. фото) Помогите разобраться. Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 411
Размер:	245.1 Кб
ID:	54916
Реклама:
Alpout вне форума  
Непрочитано 18.11.2013, 21:51  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: PIC16f676

Alpout, Давайте погадаем , без проекта .
Кстати это не тот ли вольтметр на 3 цифры с мрачным быдлокодом ,
кочующий по сети уже хрен знает сколько времени?
Код:
#include ‹16F676.h›
#device adc=10 
#fuses INTRC_IO,NOWDT,PUT,NOPROTECT,BROWNOUT,NOMCLR
#use delay (clock=4000000) // 4MHz clock

#rom  0x3ff={0x3444}

#byte PORTA = 0x05
#byte PORTC = 0x07
#byte TRISA = 0x85
#byte TRISC = 0x87

#define SPORTA PORTA
#define SPORTC PORTC

#define  TICKS_BETWEEN_INTERRUPTS      5000 //5000
#define  INTERRUPT_OVERHEAD            35
#define  TMR1RESET (0xFFFF-(TICKS_BETWEEN_INTERRUPTS-INTERRUPT_OVERHEAD))

const char SegCode[11] = {0x40,0x57,0x22,0x06,0x15,0x0C,0x08,0x56,0x00,0x04  ,0xFF};
	//                       0    1    2    3    4    5    6    7    8    9
const char Column[3]   = {0x02,0x01,0x04};
static char Segment[3] = {0x7f,0x7f,0x7f};	
static unsigned char ColCount=0x00;

void CPU_SETUP(void);
void Display(void);
void HTO7S(unsigned int32 Num);

byte i;
unsigned int32 result;

#INT_TIMER1
void Timer1(void)
{	
	set_timer1(TMR1RESET);
	Display();	
}	

void main()
{		
	unsigned char i;
	
	CPU_SETUP();
	
	while(true)
	{			
		result=0;
		for (i=0;i‹20;i++)
		{
			set_adc_channel(3); 
			delay_ms(1); 
			result=result+read_adc();
		}
			//result = 0x3fe;									
	 	HTO7S(result/20);	
		delay_ms(200);		    
	}
	
}

void CPU_SETUP()
{
 	
   setup_comparator(NC_NC_NC_NC);	// not use comparator module
   setup_adc_ports( sAN3 | VSS_VDD); 
   setup_adc(ADC_CLOCK_DIV_64);
   TRISA=0b00011000;
   PORTA=0x27;
   TRISC=0b00000000;
   PORTC=0x37;
   
   
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   set_timer1(TMR1RESET);
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_TIMER1);   
}

//-------------------------------------
// Display routine
//-------------------------------------
void Display()
{
	PORTA = 0b00100111;	  // off all digits column and Segment G
	PORTC = 0b00111111;   // off segment a-f	
	delay_cycles(2);
	

	if (ColCount›=3) 
	ColCount=0;
    	
	SPORTC = Segment[ColCount];
	SPORTA = ((Segment[ColCount] & 0b01000000)››1) | (Column[ColCount]^0x07);
	ColCount++;				
}	

//--------------------------------------
// Convet HEX 2 byte to 7-Segment code
//--------------------------------------
void HTO7S(unsigned int32 Num)
{

	unsigned int32 res;

	
	Segment[0]=SegCode[30*Num/10230];
	if (Segment[0]==0x40) 
	Segment[0]=0xFF;
	
	res = 30*Num%10230;
	Segment[1]=SegCode[10*res/10230];
	res=10*res%10230;
	Segment[2]=SegCode[10*res/10230];
}
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 18.11.2013, 22:27  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: PIC16f676

dosikus, нет. прогу сам пишу, тем более не умею на С программировать.
Alpout вне форума  
Непрочитано 18.11.2013, 22:29  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: PIC16f676

Где хотя бы проект?
Easyrider83 вне форума  
Непрочитано 18.11.2013, 22:37  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: PIC16f676

Код:
list      p=16f676           ; list directive to define processor
	#include ‹p16F676.inc›        ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file

	__CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT 

;***** VARIABLE DEFINITIONS
PAUSE1        EQU     0x20        
DIGITH        EQU     0x21       
DIGITL        EQU     0X22
PORT          EQU     0X23
TEMP          EQU     0X24
FIRST         EQU     0X25 ; FIRST DIGIT
SECOND        EQU     0X26 ; SECOND DIGIT
THIRD         EQU     0X27 ; THIRD DIGIT
CYCLE         EQU     0X28 ; NUMBER OF CYCLES
REG1          EQU     0X29
REG2          EQU     0X2A
REG3          EQU     0X2B


RADIX DECIMAL
;*************************************************  *********************
		ORG     0x000             ; processor reset vector
        GOTO    INTER_OSC          ; go to beginning of program
;------------------------------------------------------------------------------
; OSCCAL RESTORE 
;------------------------------------------------------------------------------
INTER_OSC

        errorlevel -302
        BSF     STATUS,RP0    ; set file register bank to 1 
        CALL    0x3FF         ; retrieve factory calibration value
        MOVWF   OSCCAL        ; update register with factory cal value 
        BCF     STATUS,RP0    ; set file register bank to 0
        errorlevel +302

INITIALIZE
        MOVLW   0X07 
        MOVWF   CMCON       ;make digital ports
        BSF     STATUS,RP0  ;SELECT BANK1
        MOVLW   B'00010000'
        MOVWF   ADCON1      ;SELECT CONVERSION CLOCK Tad=8/Fosc=2 microS
        CLRF    TRISC       ;MAKE ALL PORTC AS OUTPUT
        MOVLW   B'00010000' ;MAKE RA4 AS INPUT, THE OTHERS ARE OUTPUT
        MOVWF   TRISA      
        MOVLW   0X78
        MOVWF   OPTION_REG
        ;BCF    OPTION_REG, NOT_GPPU ;TURN ON INTERNAL PULL UP.
        MOVLW   B'00001000'
        MOVWF   ANSEL
        MOVLW   0XFF
        MOVWF   WPUA 
        BCF     STATUS, RP0 ;SELECT BANK0
        CLRF    PORTA       ;NO INFORMATION ON DIGITS
        CLRF    PORTC       ;NO INFORMATION ON DIGITS


GOTO START

 START     
;CLEAR REGISTERS
        CLRF    ADRESH
        BSF     STATUS, RP0
        CLRF    ADRESL
        BCF     STATUS, RP0
        CLRF    PAUSE1
        CLRF    DIGITH
        CLRF    DIGITL
        CLRF    FIRST
        CLRF    SECOND
        CLRF    THIRD
        MOVLW   8
        MOVWF   CYCLE
;MEASURE
MEASURE
        MOVLW   B'10001101' ;(1)RIGHT JUSTIFIED, (0)VDD VOLTAGE REFERENCE, (0)N/A, (011)AN3, (1)DONE CONVERSION, (1) ADC ON
        MOVWF   ADCON0
        CALL    WAIT
        BSF     ADCON0,1
        BTFSC   ADCON0,1
        GOTO    $-1
        MOVFW   ADRESH
        MOVWF   DIGITH
        BSF     STATUS,RP0 ; 1 BANK
        MOVFW   ADRESL
        BCF     STATUS,RP0        
        MOVWF   DIGITL
        GOTO    BCD
;--------------------------------------------------------------------------
LEDS
        ADDWF   PCL,F
        RETLW   B'00000000' ; 0
        RETLW   B'00011101' ; 1
        RETLW   B'00000110' ; 2
        RETLW   B'00000100' ; 3
        RETLW   B'00000001' ; 4
        RETLW   B'00000000' ; 5
        RETLW   B'00000000' ; 6
        RETLW   B'00011100' ; 7
        RETLW   B'00000000' ; 8
        RETLW   B'00000000' ; 9
LEDS2   ADDWF   PCL,F
        RETLW   B'00000010' ; 0
        RETLW   B'00001110' ; 1
        RETLW   B'00000000' ; 2
        RETLW   B'00000100' ; 3
        RETLW   B'00001100' ; 4
        RETLW   B'00000101' ; 5
        RETLW   B'00000001' ; 6
        RETLW   B'00001110' ; 7
        RETLW   B'00000000' ; 8
        RETLW   B'00000100' ; 9

;--------------------------------------------------------------------------
;BINARY TO BINARY CODED DECIMAL FORM
BCD
        BCF   STATUS, C
        RLF   THIRD
        RLF   DIGITH, F
        BTFSC STATUS, C
        CALL  ADDC2
        RLF   DIGITL, F
        BTFSC STATUS, C
        CALL  ADDC1
        GOTO  COPY       
        
ADDC1    BSF   DIGITH, 0
         RETURN
ADDC2    BSF   THIRD, 0
         RETURN
        
COPY    MOVFW DIGITH    ; DIGITH--›W, W*(00001111)--›FIRST
        ANDLW B'00001111'
        MOVWF TEMP
        CALL  CHECK
        MOVFW TEMP
        MOVWF FIRST

        MOVFW DIGITH    ; DIGITH--›W, W*(11110000)--›SECOND--›SWAP(SECOND)
        ANDLW B'11110000'
        MOVWF TEMP   
        SWAPF TEMP     
        CALL  CHECK
        MOVFW TEMP
        MOVWF SECOND

        MOVFW THIRD
        ANDLW B'00001111'
        MOVWF TEMP
        CALL  CHECK
        MOVFW TEMP
        MOVWF THIRD

PUSH    MOVFW  SECOND ; COPY CORRECTED DIGITS
        MOVWF  DIGITH
        SWAPF  DIGITH
        MOVFW  FIRST
        ADDWF  DIGITH, F
        
        DECFSZ CYCLE 
        GOTO   BCD  
        GOTO   DISPLAY     

CHECK   MOVFW CYCLE
        SUBLW 1
        BTFSC STATUS, Z
        RETURN
        MOVFW TEMP   ; CHECK. IF DIGIT‹5, THEN GOTO  ELSE ADD 3
        SUBLW 4
        BTFSC STATUS, C
        RETURN
        MOVFW TEMP
        ADDLW 3
        MOVWF TEMP
        RETURN
;END ENCODING TO BCD
;----------------------------------------------------------------------        
DISPLAY 
;FIRST DIGIT
       MOVFW  FIRST
       CALL   LEDS
       MOVWF  PORTA
       MOVFW  FIRST
       CALL   LEDS2
       MOVWF  PORTC
       BSF    PORTC, 5
       CALL   WAIT;2
       CLRF   PORTC
;SECOND DIGIT
       MOVFW  SECOND
       CALL   LEDS
       MOVWF  PORTA
       MOVFW  FIRST
       CALL   LEDS2
       MOVWF  PORTC
       BSF    PORTC, 4
       CALL   WAIT;2
       CLRF   PORTC
;THIRD DIGIT
       MOVFW  THIRD
       CALL   LEDS
       MOVWF  PORTA
       MOVFW  FIRST
       CALL   LEDS2
       MOVWF  PORTC
       BSF    PORTA, 5
       CALL   WAIT;2
       CLRF   PORTA

GOTO START
 
WAIT    
        MOVLW   200
        MOVWF   PAUSE1
        DECFSZ  PAUSE1
        GOTO    $-1
RETURN
WAIT2   MOVLW   10
        MOVWF   REG1
        MOVLW   7
        MOVWF   REG2
        DECFSZ  REG1, F
        GOTO    $-1
        DECFSZ  REG2, F 
        GOTO    $-3
RETURN
;----------------------------------------------------------------------------------

           
END


Я стер некоторые части, так как они не относятся к данной теме.

Последний раз редактировалось Alpout; 18.11.2013 в 23:48.
Alpout вне форума  
Непрочитано 18.11.2013, 22:44  
Albert_V
Гражданин KAZUS.RU
 
Регистрация: 13.04.2012
Адрес: Королёв МО
Сообщений: 786
Сказал спасибо: 621
Сказали Спасибо 364 раз(а) в 200 сообщении(ях)
Albert_V на пути к лучшему
По умолчанию Re: PIC16f676

Что мешает в MPLAB запустить Debugger, проставить Breakpoint's (если надо) и по шагам проверить работу программы, "подставив" значение "как бы полученное" с ADC???
Albert_V вне форума  
Непрочитано 18.11.2013, 22:44  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: PIC16f676

добавлю схемуНажмите на изображение для увеличения
Название: вольтаж.JPG
Просмотров: 271
Размер:	77.1 Кб
ID:	54917
Alpout вне форума  
Непрочитано 18.11.2013, 22:46  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
По умолчанию Re: PIC16f676

Albert_V, подставил. с цифрами все в норме. с АЦП что то не так. то есть заношу преварительно в регистры ADRESH и ADRESL. BCD все в норме вычисляет. а вот в реале чтото нето не цифры а непонятно что...Когда на землю замыкаешь 000 покахывает, а когда на любое напругу подключаешь, тут то и непонятно что хочет показать мне))

Последний раз редактировалось Alpout; 18.11.2013 в 22:48.
Alpout вне форума  
Непрочитано 18.11.2013, 22:51  
Albert_V
Гражданин KAZUS.RU
 
Регистрация: 13.04.2012
Адрес: Королёв МО
Сообщений: 786
Сказал спасибо: 621
Сказали Спасибо 364 раз(а) в 200 сообщении(ях)
Albert_V на пути к лучшему
По умолчанию Re: PIC16f676

Сообщение от Alpout Посмотреть сообщение
Albert_V, подставил. с цифрами все в норме. с АЦП что то не так. то есть заношу преварительно в регистры ADRESH и ADRESL. BCD все в норме вычисляет. а вот в реале чтото нето не цифры а непонятно что...Когда на землю замыкаешь 000 покахывает, а когда на любое напругу подключаешь, тут то и непонятно что хочет показать мне))
Выложите Disassembly Listing.
Albert_V вне форума  
Непрочитано 18.11.2013, 22:52  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: PIC16f676

Alpout, оформите код как положено- тэг code .
Нет ни какого желания подобные простыни изучать...
__________________
Осторожно , злой кот
dosikus вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с PIC16f676 xxparadoxx Микроконтроллеры, АЦП, память и т.д 30 20.04.2012 08:30
PIC16F676 не зашивается VeroMax Микроконтроллеры, АЦП, память и т.д 12 24.12.2011 01:49
Проблема связи pic16f676 и LCD xxparadoxx Микроконтроллеры, АЦП, память и т.д 5 28.12.2010 14:29
PIC16F676 как прошивать с помощью WILLEM ribak01 Микроконтроллеры, АЦП, память и т.д 1 16.08.2007 00:53


Часовой пояс GMT +4, время: 08:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot