Отговори на тема  [ 22 мнения ]  Отиди на страница 1, 2  Следваща
12F675 и CCS 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 12F675 и CCS
здравеите колеги,
имам следния проблем, Пи6а си програмка за 12Ф675 на ццс компилирам сорса и ко да видя в АСМ фаила:

Код:

            LIST      P=16F84, F=INHX8M
            include "P16FXX.inc"
            ORG     0x0000

            MOVLW   0x00
            MOVWF   PCLATH
            GOTO    Label_0001
            NOP
            BTFSC   STATUS    , RP0
...
...
Label_0001  CALL    Label_0006
            BSF     STATUS    , RP0
            MOVWF   0x10
            MOVLW   0x00
...
...
Label_0006

            END



демек, туи не6то след 5-та инструкция спира програмата, ето го и сорса, но не вярвам да е от него защото като го променя да пасва за 16ф84, си па4ка без проблеми (сорса нее завършен, но поне не спира като го компилна за 16ф84).

Код:

#include "D:\Electro\PIC\PROJECTS\cct1.h"
#int_RTCC
RTCC_isr()
{
if( input(PIN_a1)==0 )
   {
   blink=1;
   b=0;
   }
else
{
b++;
if(b==25)
   {
   blink=0;
   b=0;
   }
}

}



void main()
{

  setup_adc_ports(NO_ANALOGS|VSS_VDD);
  setup_adc(ADC_OFF);
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  setup_timer_1(T1_DISABLED);
  setup_comparator(NC_NC);
  setup_vref(FALSE);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
set_tris_A(0b00000011);
count=make16(read_eeprom(0),read_eeprom(1));

while (true)
   {
     if ( input(PIN_a0)/*&(!blink)*/ )
     {
      delay_us(20);
      if ( input(PIN_a0) )
         {
          count++;

          write_eeprom(0,count>>8);;
          write_eeprom(1,count);

          output_high(PIN_a4);
          delay_us(250);
          output_low(PIN_a4);
          //printf("\r ON: %03Lu",count);

         }
      }
   }
}

това е сорса за 12ф675.
някви идеи защо става така?


Пон Фев 06, 2006 5:04 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
А на компилатора какъв тип контролер си задал.
Това
Цитат:
LIST P=16F84, F=INHX8M
include "P16FXX.inc"

откъде ти идва, щом като пишеш за 675.


Пон Фев 06, 2006 5:11 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
хмммм, сега го забелязах.....няям идея от де идва
Код:
#include <12f675.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES PUT                      //Power Up Timer
#FUSES BROWNOUT                 //Reset when brownout detected

това е в cct1.h, демек е оказано 4е ще е за 12ф675.....няям идея....мойе би идва от ic-prog-а.....
Код:
; Generated by WinDis84, (c) Nigel Goodwin 1998.

            LIST      P=16F84, F=INHX8M
            include "P16FXX.inc"
            ORG     0x0000


Пон Фев 06, 2006 5:22 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Ето какво излиза след компилация на сорса който си дал:
Код:
MPASM

CCS PCM C Compiler, Version 3.241, 28193               06-Ôåâðóàðè-06 16:22

               Filename: C:\myfile\prog\pic\c\ccsc\test.lst

               ROM used: 232 words (23%)
                         Largest free fragment is 792
               RAM used: 20 (31%) at main() level
                         21 (33%) worst case
               Stack:    1 worst case (0 in main + 1 for interrupts)

0000 3000       00001 MOVLW  00
0001 008A       00002 MOVWF  0A
0002 2851       00003 GOTO   051
0003 0000       00004 NOP
0004 1A83       00005 BTFSC  03.5
0005 280A       00006 GOTO   00A
0006 00A5       00007 MOVWF  25
0007 0E03       00008 SWAPF  03,W
0008 00A6       00009 MOVWF  26
0009 280F       00010 GOTO   00F
000A 1283       00011 BCF    03.5
000B 00A5       00012 MOVWF  25
000C 0E03       00013 SWAPF  03,W
000D 00A6       00014 MOVWF  26
000E 14A6       00015 BSF    26.1
000F 080A       00016 MOVF   0A,W
0010 00AD       00017 MOVWF  2D
0011 018A       00018 CLRF   0A
0012 1383       00019 BCF    03.7
0013 0EA5       00020 SWAPF  25,F
0014 0804       00021 MOVF   04,W
0015 00A7       00022 MOVWF  27
0016 0820       00023 MOVF   20,W
0017 00A8       00024 MOVWF  28
0018 0821       00025 MOVF   21,W
0019 00A9       00026 MOVWF  29
001A 0822       00027 MOVF   22,W
001B 00AA       00028 MOVWF  2A
001C 0823       00029 MOVF   23,W
001D 00AB       00030 MOVWF  2B
001E 0824       00031 MOVF   24,W
001F 00AC       00032 MOVWF  2C
0020 1283       00033 BCF    03.5
0021 1E8B       00034 BTFSS  0B.5
0022 2825       00035 GOTO   025
0023 190B       00036 BTFSC  0B.2
0024 283A       00037 GOTO   03A
0025 0827       00038 MOVF   27,W
0026 0084       00039 MOVWF  04
0027 0828       00040 MOVF   28,W
0028 00A0       00041 MOVWF  20
0029 0829       00042 MOVF   29,W
002A 00A1       00043 MOVWF  21
002B 082A       00044 MOVF   2A,W
002C 00A2       00045 MOVWF  22
002D 082B       00046 MOVF   2B,W
002E 00A3       00047 MOVWF  23
002F 082C       00048 MOVF   2C,W
0030 00A4       00049 MOVWF  24
0031 082D       00050 MOVF   2D,W
0032 008A       00051 MOVWF  0A
0033 0E26       00052 SWAPF  26,W
0034 0083       00053 MOVWF  03
0035 1283       00054 BCF    03.5
0036 0E25       00055 SWAPF  25,W
0037 18A6       00056 BTFSC  26.1
0038 1683       00057 BSF    03.5
0039 0009       00058 RETFIE
0000            00059 .................... #include <12F675.h>
0000            00060 .................... //////// Standard Header file for the PIC12F675 device ////////////////
0000            00061 .................... #device PIC12F675
0000            00470 .................... #list
0000            00471 ....................
0000            00472 .................... #use delay(Clock=4000000)
0000            00473 ....................
0000            00474 .................... int8 blink,b;
0000            00475 .................... int16 count;
0000            00476 ....................
0000            00477 .................... #int_RTCC
0000            00478 .................... RTCC_isr()
0000            00479 .................... {
0000            00480 .................... if( input(PIN_a1)==0 )
003A 1683       00481 BSF    03.5
003B 1485       00482 BSF    05.1
003C 3000       00483 MOVLW  00
003D 1283       00484 BCF    03.5
003E 1885       00485 BTFSC  05.1
003F 3001       00486 MOVLW  01
0040 3A00       00487 XORLW  00
0041 1D03       00488 BTFSS  03.2
0042 2847       00489 GOTO   047
0000            00490 ....................    {
0000            00491 ....................    blink=1;
0043 3001       00492 MOVLW  01
0044 00AE       00493 MOVWF  2E
0000            00494 ....................    b=0;
0045 01AF       00495 CLRF   2F
0000            00496 ....................    }
0000            00497 ....................  else
0046 284E       00498 GOTO   04E
0000            00499 ....................  {
0000            00500 ....................  b++;
0047 0AAF       00501 INCF   2F,F
0000            00502 ....................  if(b==25)
0048 082F       00503 MOVF   2F,W
0049 3C19       00504 SUBLW  19
004A 1D03       00505 BTFSS  03.2
004B 284E       00506 GOTO   04E
0000            00507 ....................    {
0000            00508 ....................    blink=0;
004C 01AE       00509 CLRF   2E
0000            00510 ....................    b=0;
004D 01AF       00511 CLRF   2F
0000            00512 ....................    }
0000            00513 ....................  }
0000            00514 ....................
0000            00515 .................... }
0000            00516 ....................
0000            00517 ....................
0000            00518 ....................
004E 110B       00519 BCF    0B.2
004F 118A       00520 BCF    0A.3
0050 2825       00521 GOTO   025
0000            00522 .................... void main()
0051 23FF       00523 CALL   3FF
0052 1683       00524 BSF    03.5
0053 0090       00525 MOVWF  10
0054 0184       00526 CLRF   04
0055 301F       00527 MOVLW  1F
0056 0583       00528 ANDWF  03,F
0057 1283       00529 BCF    03.5
0058 131F       00530 BCF    1F.6
0059 1683       00531 BSF    03.5
005A 101F       00532 BCF    1F.0
005B 109F       00533 BCF    1F.1
005C 111F       00534 BCF    1F.2
005D 119F       00535 BCF    1F.3
005E 3007       00536 MOVLW  07
005F 1283       00537 BCF    03.5
0060 0099       00538 MOVWF  19
0000            00539 .................... {
0000            00540 ....................
0000            00541 ....................   setup_adc_ports(NO_ANALOGS|VSS_VDD);
0061 131F       00542 BCF    1F.6
0062 1683       00543 BSF    03.5
0063 101F       00544 BCF    1F.0
0064 109F       00545 BCF    1F.1
0065 111F       00546 BCF    1F.2
0066 119F       00547 BCF    1F.3
0000            00548 ....................   setup_adc(ADC_OFF);
0067 1283       00549 BCF    03.5
0068 101F       00550 BCF    1F.0
0000            00551 ....................   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
0069 1683       00552 BSF    03.5
006A 0801       00553 MOVF   01,W
006B 39C7       00554 ANDLW  C7
006C 3808       00555 IORLW  08
006D 0081       00556 MOVWF  01
0000            00557 ....................   setup_timer_1(T1_DISABLED);
006E 1283       00558 BCF    03.5
006F 0190       00559 CLRF   10
0000            00560 ....................   setup_comparator(NC_NC);
0070 3007       00561 MOVLW  07
0071 0099       00562 MOVWF  19
0072 1683       00563 BSF    03.5
0073 0805       00564 MOVF   05,W
0074 3003       00565 MOVLW  03
0075 1283       00566 BCF    03.5
0076 00A0       00567 MOVWF  20
0077 0BA0       00568 DECFSZ 20,F
0078 2877       00569 GOTO   077
0079 0819       00570 MOVF   19,W
007A 118C       00571 BCF    0C.3
0000            00572 ....................   setup_vref(FALSE);
007B 1683       00573 BSF    03.5
007C 0199       00574 CLRF   19
0000            00575 ....................    enable_interrupts(INT_RTCC);
007D 1283       00576 BCF    03.5
007E 168B       00577 BSF    0B.5
0000            00578 ....................    enable_interrupts(GLOBAL);
007F 30C0       00579 MOVLW  C0
0080 048B       00580 IORWF  0B,F
0000            00581 .................... set_tris_A(0b00000011);
0081 3003       00582 MOVLW  03
0082 1683       00583 BSF    03.5
0083 0085       00584 MOVWF  05
0000            00585 .................... count=make16(read_eeprom(0),read_eeprom(1));
0084 019B       00586 CLRF   1B
0085 139C       00587 BCF    1C.7
0086 141C       00588 BSF    1C.0
0087 081A       00589 MOVF   1A,W
0088 1283       00590 BCF    03.5
0089 00B2       00591 MOVWF  32
008A 3001       00592 MOVLW  01
008B 1683       00593 BSF    03.5
008C 009B       00594 MOVWF  1B
008D 139C       00595 BCF    1C.7
008E 141C       00596 BSF    1C.0
008F 081A       00597 MOVF   1A,W
0090 1283       00598 BCF    03.5
0091 00B3       00599 MOVWF  33
0092 0832       00600 MOVF   32,W
0093 00B1       00601 MOVWF  31
0094 0833       00602 MOVF   33,W
0095 00B0       00603 MOVWF  30
0000            00604 ....................
0000            00605 .................... while (true)
0000            00606 ....................    {
0000            00607 ....................      if ( input(PIN_a0)/*&(!blink)*/ )
0096 1683       00608 BSF    03.5
0097 1405       00609 BSF    05.0
0098 1283       00610 BCF    03.5
0099 1C05       00611 BTFSS  05.0
009A 28E6       00612 GOTO   0E6
0000            00613 ....................      {
0000            00614 ....................       delay_us(20);
009B 3006       00615 MOVLW  06
009C 00A0       00616 MOVWF  20
009D 0BA0       00617 DECFSZ 20,F
009E 289D       00618 GOTO   09D
009F 0000       00619 NOP
0000            00620 ....................       if ( input(PIN_a0) )
00A0 1683       00621 BSF    03.5
00A1 1405       00622 BSF    05.0
00A2 1283       00623 BCF    03.5
00A3 1C05       00624 BTFSS  05.0
00A4 28E6       00625 GOTO   0E6
0000            00626 ....................          {
0000            00627 ....................           count++;
00A5 0AB0       00628 INCF   30,F
00A6 1903       00629 BTFSC  03.2
00A7 0AB1       00630 INCF   31,F
0000            00631 ....................
0000            00632 ....................           write_eeprom(0,count>>8);;
00A8 0831       00633 MOVF   31,W
00A9 00B2       00634 MOVWF  32
00AA 01B3       00635 CLRF   33
00AB 1683       00636 BSF    03.5
00AC 019B       00637 CLRF   1B
00AD 1283       00638 BCF    03.5
00AE 0831       00639 MOVF   31,W
00AF 1683       00640 BSF    03.5
00B0 009A       00641 MOVWF  1A
00B1 151C       00642 BSF    1C.2
00B2 1283       00643 BCF    03.5
00B3 080B       00644 MOVF   0B,W
00B4 00A0       00645 MOVWF  20
00B5 138B       00646 BCF    0B.7
00B6 1683       00647 BSF    03.5
00B7 3055       00648 MOVLW  55
00B8 009D       00649 MOVWF  1D
00B9 30AA       00650 MOVLW  AA
00BA 009D       00651 MOVWF  1D
00BB 149C       00652 BSF    1C.1
00BC 189C       00653 BTFSC  1C.1
00BD 28BC       00654 GOTO   0BC
00BE 111C       00655 BCF    1C.2
00BF 1283       00656 BCF    03.5
00C0 0820       00657 MOVF   20,W
00C1 048B       00658 IORWF  0B,F
0000            00659 ....................           write_eeprom(1,count);
00C2 3001       00660 MOVLW  01
00C3 1683       00661 BSF    03.5
00C4 009B       00662 MOVWF  1B
00C5 1283       00663 BCF    03.5
00C6 0830       00664 MOVF   30,W
00C7 1683       00665 BSF    03.5
00C8 009A       00666 MOVWF  1A
00C9 151C       00667 BSF    1C.2
00CA 1283       00668 BCF    03.5
00CB 080B       00669 MOVF   0B,W
00CC 00A0       00670 MOVWF  20
00CD 138B       00671 BCF    0B.7
00CE 1683       00672 BSF    03.5
00CF 3055       00673 MOVLW  55
00D0 009D       00674 MOVWF  1D
00D1 30AA       00675 MOVLW  AA
00D2 009D       00676 MOVWF  1D
00D3 149C       00677 BSF    1C.1
00D4 189C       00678 BTFSC  1C.1
00D5 28D4       00679 GOTO   0D4
00D6 111C       00680 BCF    1C.2
00D7 1283       00681 BCF    03.5
00D8 0820       00682 MOVF   20,W
00D9 048B       00683 IORWF  0B,F
0000            00684 ....................
0000            00685 ....................           output_high(PIN_a4);
00DA 1683       00686 BSF    03.5
00DB 1205       00687 BCF    05.4
00DC 1283       00688 BCF    03.5
00DD 1605       00689 BSF    05.4
0000            00690 ....................           delay_us(250);
00DE 3053       00691 MOVLW  53
00DF 00A0       00692 MOVWF  20
00E0 0BA0       00693 DECFSZ 20,F
00E1 28E0       00694 GOTO   0E0
0000            00695 ....................           output_low(PIN_a4);
00E2 1683       00696 BSF    03.5
00E3 1205       00697 BCF    05.4
00E4 1283       00698 BCF    03.5
00E5 1205       00699 BCF    05.4
0000            00700 ....................           //printf("\r ON: %03Lu",count);
0000            00701 ....................
0000            00702 ....................          }
0000            00703 ....................       }
0000            00704 ....................    }
00E6 2896       00705 GOTO   096
0000            00706 .................... }
00E7 0063       0707 SLEEP

SYMBOL TABLE
  LABEL                             VALUE

INDF                              00000000
TMR0                              00000001
PCL                               00000002
STATUS                            00000003
_C                                00000003
_DC                               00000003
_Z                                00000003
NOT_PD                            00000003
NOT_TO                            00000003
RP0                               00000003
RP1                               00000003
IRP                               00000003
FSR                               00000004
GPIO                              00000005
GP0                               00000005
GPIO0                             00000005
GPIO1                             00000005
GP1                               00000005
GPIO2                             00000005
GP2                               00000005
GP3                               00000005
GPIO3                             00000005
GPIO4                             00000005
GP4                               00000005
GP5                               00000005
GPIO5                             00000005
PCLATH                            0000000A
INTCON                            0000000B
GPIF                              0000000B
INTF                              0000000B
T0IF                              0000000B
GPIE                              0000000B
INTE                              0000000B
T0IE                              0000000B
PEIE                              0000000B
GIE                               0000000B
PIR1                              0000000C
TMR1IF                            0000000C
CMIF                              0000000C
ADIF                              0000000C
EEIF                              0000000C
TMR1L                             0000000E
TMR1H                             0000000F
T1CON                             00000010
TMR1ON                            00000010
TMR1CS                            00000010
NOT_T1SYNC                        00000010
T1OSCEN                           00000010
T1CKPS0                           00000010
T1CKPS1                           00000010
TMR1GE                            00000010
CMCON                             00000019
CM0                               00000019
CM1                               00000019
CM2                               00000019
CIS                               00000019
CINV                              00000019
COUT                              00000019
C1OUT                             00000019
ADRESH                            0000001E
ADON                              0000001F
ADCON0                            0000001F
GO_DONE                           0000001F
NOT_DONE                          0000001F
GO                                0000001F
CHS0                              0000001F
CHS1                              0000001F
VCFG                              0000001F
ADFM                              0000001F
_RETURN_                          00000021
blink                             0000002E
b                                 0000002F
count                             00000030
OPTION_REG                        00000081
PS0                               00000081
PS1                               00000081
PS2                               00000081
PSA                               00000081
T0SE                              00000081
T0CS                              00000081
INTEDG                            00000081
NOT_GPPU                          00000081
TRISIO                            00000085
PIE1                              0000008C
T1IE                              0000008C
TMR1IE                            0000008C
CMIE                              0000008C
ADIE                              0000008C
EEIE                              0000008C
PCON                              0000008E
NOT_BOD                           0000008E
NOT_POR                           0000008E
OSCCAL                            00000090
CAL0                              00000090
CAL1                              00000090
CAL2                              00000090
CAL3                              00000090
CAL4                              00000090
CAL5                              00000090
WPU                               00000095
IOCB0                             00000096
IOCB                              00000096
IOC                               00000096
IOC0                              00000096
IOCB1                             00000096
IOC1                              00000096
IOCB2                             00000096
IOC2                              00000096
IOC3                              00000096
IOCB3                             00000096
IOC4                              00000096
IOCB4                             00000096
IOC5                              00000096
IOCB5                             00000096
VRCON                             00000099
VR0                               00000099
VR1                               00000099
VR2                               00000099
VR3                               00000099
VRR                               00000099
VREN                              00000099
EEDATA                            0000009A
EEADR                             0000009B
RD                                0000009C
EECON1                            0000009C
WR                                0000009C
WREN                              0000009C
WRERR                             0000009C
EECON2                            0000009D
ADRESL                            0000009E
ADRES                             0000009E
ANS0                              0000009F
ANSEL                             0000009F
ANS1                              0000009F
ANS2                              0000009F
ANS3                              0000009F
ADCS0                             0000009F
ADCS1                             0000009F
ADCS2                             0000009F
RTCC_isr                          0000003A
main                              00000051

MEMORY USAGE



Ами така кажи бе човек, защо гледаш листинга от IC-Prog ? Та това не е листинга на CCS, ами е някакъв листинг, пляснат от IC-Proga !

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Фев 06, 2006 5:25 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
ем то хубу че излиза таова, но пак маи отива на майна си раина "goto 051".... call 3ff


Пон Фев 06, 2006 5:31 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
мдааааа, моя гресхка, ама там се видя наи-ясно, по-то4но, там го забелязах, инак листинга от ццс го ето :
Код:
CCS PCM C Compiler, Version 3.235, 16465               07-Dec-04 16:21

               Filename: D:\Electro\PIC\PROJECTS\Cafe Counter\Cafe counter\cct1.LST

               ROM used: 234 words (23%)
                         Largest free fragment is 790
               RAM used: 20 (31%) at main() level
                         21 (33%) worst case
               Stack:    1 worst case (0 in main + 1 for interrupts)

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   03A
0003:  NOP
0004:  BTFSC  03.5
0005:  GOTO   00A
0006:  MOVWF  25
0007:  SWAPF  03,W
0008:  MOVWF  26
0009:  GOTO   00F
000A:  BCF    03.5
000B:  MOVWF  25
000C:  SWAPF  03,W
000D:  MOVWF  26
000E:  BSF    26.1
000F:  MOVF   0A,W
0010:  MOVWF  2D
0011:  CLRF   0A
0012:  BCF    03.7
0013:  SWAPF  25,F
0014:  MOVF   04,W
0015:  MOVWF  27
0016:  MOVF   20,W
0017:  MOVWF  28
0018:  MOVF   21,W
0019:  MOVWF  29
001A:  MOVF   22,W
001B:  MOVWF  2A
001C:  MOVF   23,W
001D:  MOVWF  2B
001E:  MOVF   24,W
001F:  MOVWF  2C
0020:  BCF    03.5
0021:  BTFSS  0B.5
0022:  GOTO   025
0023:  BTFSC  0B.2
0024:  GOTO   040
0025:  MOVF   27,W
0026:  MOVWF  04
0027:  MOVF   28,W
0028:  MOVWF  20
0029:  MOVF   29,W
002A:  MOVWF  21
002B:  MOVF   2A,W
002C:  MOVWF  22
002D:  MOVF   2B,W
002E:  MOVWF  23
002F:  MOVF   2C,W
0030:  MOVWF  24
0031:  MOVF   2D,W
0032:  MOVWF  0A
0033:  SWAPF  26,W
0034:  MOVWF  03
0035:  BCF    03.5
0036:  SWAPF  25,W
0037:  BTFSC  26.1
0038:  BSF    03.5
0039:  RETFIE
003A:  CALL   3FF
003B:  BSF    03.5
003C:  MOVWF  10
003D:  MOVLW  00
003E:  MOVWF  0A
003F:  GOTO   057
....................  #include "D:\Electro\PIC\PROJECTS\Cafe Counter\Cafe counter\cct1.h"
....................  #include <12f675.h>
....................  //////// Standard Header file for the PIC12F675 device ////////////////
.................... #device PIC12F675
.................... #list
....................
.................... #device adc=8
....................
.................... #FUSES NOWDT                    //No Watch Dog Timer
.................... #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
.................... #FUSES NOCPD                    //No EE protection
.................... #FUSES NOPROTECT                //Code not protected from reading
.................... #FUSES NOMCLR                   //Master Clear pin used for I/O
.................... #FUSES PUT                      //Power Up Timer
.................... #FUSES BROWNOUT                 //Reset when brownout detected
....................
.................... #use delay(clock=4000000)
.................... //#use rs232(baud=9600,parity=N,xmit=PIN_A5,rcv=PIN_A3,bits=9)
.................... long int count;
.................... byte b;
.................... //byte miga;
.................... //#define led  (PIN_a2)
.................... byte blink;
....................
....................
.................... #int_RTCC
.................... RTCC_isr()
.................... {
.................... if( input(PIN_a1)==0 )
0040:  BSF    03.5
0041:  BSF    05.1
0042:  MOVLW  00
0043:  BCF    03.5
0044:  BTFSC  05.1
0045:  MOVLW  01
0046:  XORLW  00
0047:  BTFSS  03.2
0048:  GOTO   04D
....................    {
....................    blink=1;
0049:  MOVLW  01
004A:  MOVWF  31
....................    b=0;
004B:  CLRF   30
....................    }
....................  else
004C:  GOTO   054
....................  {
....................  b++;
004D:  INCF   30,F
....................  if(b==25)
004E:  MOVF   30,W
004F:  SUBLW  19
0050:  BTFSS  03.2
0051:  GOTO   054
....................    {
....................    blink=0;
0052:  CLRF   31
....................    b=0;
0053:  CLRF   30
....................    }
....................  }
....................
.................... }
....................
....................
....................
0054:  BCF    0B.2
0055:  BCF    0A.3
0056:  GOTO   025
.................... void main()
.................... {
0057:  CLRF   04
0058:  MOVLW  1F
0059:  ANDWF  03,F
005A:  BCF    1F.6
005B:  BSF    03.5
005C:  BCF    1F.0
005D:  BCF    1F.1
005E:  BCF    1F.2
005F:  BCF    1F.3
0060:  MOVLW  07
0061:  BCF    03.5
0062:  MOVWF  19
....................
....................   setup_adc_ports(NO_ANALOGS|VSS_VDD);
0063:  BCF    1F.6
0064:  BSF    03.5
0065:  BCF    1F.0
0066:  BCF    1F.1
0067:  BCF    1F.2
0068:  BCF    1F.3
....................   setup_adc(ADC_OFF);
0069:  BCF    03.5
006A:  BCF    1F.0
....................   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
006B:  BSF    03.5
006C:  MOVF   01,W
006D:  ANDLW  C7
006E:  IORLW  08
006F:  MOVWF  01
....................   setup_timer_1(T1_DISABLED);
0070:  BCF    03.5
0071:  CLRF   10
....................   setup_comparator(NC_NC);
0072:  MOVLW  07
0073:  MOVWF  19
0074:  BSF    03.5
0075:  MOVF   05,W
0076:  MOVLW  03
0077:  BCF    03.5
0078:  MOVWF  20
0079:  DECFSZ 20,F
007A:  GOTO   079
007B:  MOVF   19,W
007C:  BCF    0C.3
....................   setup_vref(FALSE);
007D:  BSF    03.5
007E:  CLRF   19
....................    enable_interrupts(INT_RTCC);
007F:  BCF    03.5
0080:  BSF    0B.5
....................    enable_interrupts(GLOBAL);
0081:  MOVLW  C0
0082:  IORWF  0B,F
.................... set_tris_A(0b00000011);
0083:  MOVLW  03
0084:  BSF    03.5
0085:  MOVWF  05
.................... count=make16(read_eeprom(0),read_eeprom(1));
0086:  CLRF   1B
0087:  BCF    1C.7
0088:  BSF    1C.0
0089:  MOVF   1A,W
008A:  BCF    03.5
008B:  MOVWF  32
008C:  MOVLW  01
008D:  BSF    03.5
008E:  MOVWF  1B
008F:  BCF    1C.7
0090:  BSF    1C.0
0091:  MOVF   1A,W
0092:  BCF    03.5
0093:  MOVWF  33
0094:  MOVF   32,W
0095:  MOVWF  2F
0096:  MOVF   33,W
0097:  MOVWF  2E
....................
.................... while (true)
....................    {
....................      if ( input(PIN_a0)/*&(!blink)*/ )
0098:  BSF    03.5
0099:  BSF    05.0
009A:  BCF    03.5
009B:  BTFSS  05.0
009C:  GOTO   0E8
....................      {
....................       delay_us(20);
009D:  MOVLW  06
009E:  MOVWF  20
009F:  DECFSZ 20,F
00A0:  GOTO   09F
00A1:  NOP
....................       if ( input(PIN_a0) )
00A2:  BSF    03.5
00A3:  BSF    05.0
00A4:  BCF    03.5
00A5:  BTFSS  05.0
00A6:  GOTO   0E8
....................          {
....................           count++;
00A7:  INCF   2E,F
00A8:  BTFSC  03.2
00A9:  INCF   2F,F
....................
....................           write_eeprom(0,count>>8);;
00AA:  MOVF   2F,W
00AB:  MOVWF  32
00AC:  CLRF   33
00AD:  BSF    03.5
00AE:  CLRF   1B
00AF:  BCF    03.5
00B0:  MOVF   2F,W
00B1:  BSF    03.5
00B2:  MOVWF  1A
00B3:  BSF    1C.2
00B4:  BCF    03.5
00B5:  MOVF   0B,W
00B6:  MOVWF  20
00B7:  BCF    0B.7
00B8:  BSF    03.5
00B9:  MOVLW  55
00BA:  MOVWF  1D
00BB:  MOVLW  AA
00BC:  MOVWF  1D
00BD:  BSF    1C.1
00BE:  BTFSC  1C.1
00BF:  GOTO   0BE
00C0:  BCF    1C.2
00C1:  BCF    03.5
00C2:  MOVF   20,W
00C3:  IORWF  0B,F
....................           write_eeprom(1,count);
00C4:  MOVLW  01
00C5:  BSF    03.5
00C6:  MOVWF  1B
00C7:  BCF    03.5
00C8:  MOVF   2E,W
00C9:  BSF    03.5
00CA:  MOVWF  1A
00CB:  BSF    1C.2
00CC:  BCF    03.5
00CD:  MOVF   0B,W
00CE:  MOVWF  20
00CF:  BCF    0B.7
00D0:  BSF    03.5
00D1:  MOVLW  55
00D2:  MOVWF  1D
00D3:  MOVLW  AA
00D4:  MOVWF  1D
00D5:  BSF    1C.1
00D6:  BTFSC  1C.1
00D7:  GOTO   0D6
00D8:  BCF    1C.2
00D9:  BCF    03.5
00DA:  MOVF   20,W
00DB:  IORWF  0B,F
....................
....................           output_high(PIN_a4);
00DC:  BSF    03.5
00DD:  BCF    05.4
00DE:  BCF    03.5
00DF:  BSF    05.4
....................           delay_us(250);
00E0:  MOVLW  53
00E1:  MOVWF  20
00E2:  DECFSZ 20,F
00E3:  GOTO   0E2
....................           output_low(PIN_a4);
00E4:  BSF    03.5
00E5:  BCF    05.4
00E6:  BCF    03.5
00E7:  BCF    05.4
....................           //printf("\r ON: %03Lu",count);
....................
....................          }
....................       }
....................    }
00E8:  GOTO   098
.................... }
....................
00E9:  SLEEP

Configuration Fuses:
   Word  1: 31C4   NOWDT NOCPD NOPROTECT NOMCLR PUT INTRC_IO BROWNOUT


и каде е това 3FF дето го търси?


Пон Фев 06, 2006 5:34 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Svetoslav40 написа:
и каде е това 3FF дето го търси?

На адрес 0x03FF се намира инструкцията retlw , като аргумента на инструкцията е зададен при производството на чипа. Този аргумент се използва за калибрация на вътрешния RC осцилатор, а ти го използваш чрез INTRC_IO. Веднага след call 0x03FF имаш movwf OSCCAL, което зарежда калибриращата константа в регистъра за калибриране на осцилатор. Така, че това се и напълно валидно извиквана на подпрограма.
При програмиране на чипа, добре написания софтуер за програмиране на чиповете, пита дали да запази константата на адрес 0x03FF или да я затрие. Хубаво е като си купиш такъв PIC, да я запишеш на лист хартия тази константа, защото може след време да решиш да използваш INTRC_IO и ако не я помниш няма да ти е калибриран осцилатора. А с калибриран RC осцилатор се пуска спокойно софтуерен UART, пробвал съм го в интервал от -10 градуса до +60 градуса и си бичи хайван без нито един грешен пакет.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Фев 06, 2006 6:43 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
ахааааа, това значи ли че програмата спира, защото няма нищо на този адрес. Цялата работа е в това, че аз ползвам Pic Simulator IDE, а там на адр. 3фф сигурно е празно, и затова да ми спира след 5-тата инструкция? ако го вритна в процесора, сигурно ще ба4ка, или???


Пон Фев 06, 2006 6:48 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Svetoslav40 написа:
ахааааа, това значи ли че програмата спира, защото няма нищо на този адрес. Цялата работа е в това, че аз ползвам Pic Simulator IDE, а там на адр. 3фф сигурно е празно, и затова да ми спира след 5-тата инструкция? ако го вритна в процесора, сигурно ще ба4ка, или???


Ами вмъкни да речем някъде в сорса на C следното
Код:
#rom 0x03FF = { 0x34XX }

където XX ти е калибровачната константа. Тогава няма да ти спира в симулатора програмата. А тя спира, защото няма кой да каже на подпрограмата да се върне.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Фев 06, 2006 6:59 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Фев 07, 2006 11:05 am
Мнения: 4
Мнение 
Абе Вълков ти ли си бе ???


Вто Фев 07, 2006 11:07 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
Мдааааа, дайе и тръгна... да са еб...., как не се сетих!?!?!
Зада не отварям нова тема (и все пак маи ще отворя) искам да питам, дали някои работи с EAGLE, и ако има такива, да ме светне някои как мога да променя големината (обиколката !?!?) на падовете, демек на това което остаа след пробиване на дупката за резистор да кажем, площадката за запояване...???


Вто Фев 07, 2006 12:55 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Фев 07, 2006 11:05 am
Мнения: 4
Мнение 
Абе Светльо, казва се "площадка на проходния отвор" и ги мани тия аматйорски програми орли ли са, кви са ми си качи Оркад или Протел. Има книжки и на БГ за тях. Даже имам в електронен вариант за Протела...


Вто Фев 07, 2006 2:50 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
абе не знам колко е аматйорска програмата, ама тоя протел нещо не ме вле4е, то аз не 4е правя кои-знае какво, ама преди 7-8 години си бях качил протел и то само до момента когато видях EAGLE. Последено време се замислям пак да пробвам с протела или както се казва сега алтиум ама да видим...сега го дърпам, 1гъба да го е... в пакета.


Вто Фев 07, 2006 3:35 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Дек 22, 2004 2:56 pm
Мнения: 347
Местоположение: Хасково
Мнение 
Цитат:
......и ги мани тия аматйорски програми орли ли са, кви са......


Ти пък сега аматьорски недей така


Вто Фев 07, 2006 3:35 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 17, 2005 11:12 pm
Мнения: 95
Местоположение: Shumen
Мнение 
дада, кажи му го :)


Вто Фев 07, 2006 3:36 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни