搜索
bottom↓
回复: 18

pic16f19xx出来了

[复制链接]

出0入0汤圆

发表于 2009-6-16 23:04:56 | 显示全部楼层 |阅读模式
pic16f19xx出来了
MICROCHIP网站上公布了,中级增强型PIC16f19xx其中两款参考价,

PIC16F1936 $1.30
PIC16F1937 $1.54

PIC16F1937报价好于和其配置类似的PIC16F887和PIC16F917.

PIC16F1937除了拥有PIC16F887的所有外设功能外和有96段LCD驱动功能和MTOUCH传感模块.

出0入0汤圆

发表于 2009-6-17 09:59:37 | 显示全部楼层
PICC-PRO应该不需要再对变量区分BANK定义了。
3.3.10.3 Bank0, Bank1, Bank2 and Bank3 Type Qualifiers
The bank0, bank1, bank2 and bank3 type qualifiers are always recognised by HI-TECH C
PRO for the PIC10/12/16 MCU Family so that code may be easily ported from other compilers,
however by default, these qualifiers have no effect.

这样看来开发PIC16F193X/4X的障碍就扫清了。

STD的高版本的,或许还是要加BANK标识的,好久没看说明书了。

LITE版本,只能用BANK0定义变量。变量太多就不行了。

出0入0汤圆

发表于 2009-6-17 10:02:26 | 显示全部楼层
就是不知道PICC-PRO,是否解决了PIC STD 9.XX开始的,对16F676/630,12F675/629,一编写中断就出错的BUG。搞得现在还是得报着805不放。

出0入0汤圆

 楼主| 发表于 2009-6-17 10:48:32 | 显示全部楼层
下载最新全功能版本的不就得了?

出0入0汤圆

发表于 2009-6-17 14:16:52 | 显示全部楼层
PICC从805升到9XX,对676的支持就莫名其妙出问题,一直等到960PL0还是这样,所以最新版本行不行,有空还得去测试。不过和C编译器搏斗,太不划算了。

出0入0汤圆

 楼主| 发表于 2009-6-17 15:44:14 | 显示全部楼层
不会吧?

一般很难发现C编译器有明显漏洞.

99%是用户的问题

出0入0汤圆

发表于 2009-6-17 17:12:35 | 显示全部楼层
PICC18V950PL2,针对PIC18F45J10,一写中断代码就不行,950PL3就可以了。
怎么证明呢?用同样的代码。
16F676的问题也是这么发现的,805一点问题没有,950,960就是出问题。
HI-TECH是个小公司,不是MS,出BUG很正常。这几天又发现一个。整了我1个小时。

出0入0汤圆

发表于 2009-6-17 17:14:25 | 显示全部楼层
上次碰到一个更崩溃的,MCC30V3.11,配合MPLAB IDEV810(或者是815,忘记了)死活有问题,串口。最后升到815A,或者我自己现在用的830,什么问题没有。

出0入0汤圆

发表于 2009-6-17 18:09:13 | 显示全部楼层
picc 9.xx的bug很多,我都碰到好几个了,现在用回8.05.

出0入0汤圆

 楼主| 发表于 2009-6-18 13:39:13 | 显示全部楼层
"16F676的问题也是这么发现的,805一点问题没有,950,960就是出问题。"

PICC9.60编译16F676有什么问题?

我来试试.

出0入0汤圆

 楼主| 发表于 2009-6-18 14:18:41 | 显示全部楼层
#include <pic.h>

__CONFIG(BGHIGH & CPD & CPROTECT & BOREN & MCLREN & PWRTEN & WDTDIS & INTOSCIO );


unsigned long n = 0;
unsigned char bFlash = 0;



void interrupt ISR(void)
{
        unsigned char temp;
        unsigned char temp2;
        unsigned int temp3;

        if(T0IE && T0IF) {//判TMR0 中断,8m

        if(bFlash == 0)
        {
                if(n < 100)
                n++;
                else
                {
                bFlash = 1;;
                n = 0;
                }
        }

        TMR0 = 5;
        T0IF = 0;}
}

void InitSys(void)
{
        unsigned char temp;

        INTCON = 0;//关闭总中断,禁止外设,timer0,外部,电平中断,清除timer0,外部,电平中断标志
        ANSEL = 0;//全部端口都为IO口线



//4M,计数器每次1us步进
        // 32*250us=8ms
        OPTION = 0X05;//1:32
        TMR0 = 5;//255-5=250us
        T0IF = 0;
        T0IE = 1;

        PEIE = 1;//开外设中断
        GIE = 1;//开总中断
}

void main()
{

InitSys();


TRISC0 = 0;

RC0 = 1;


while(1)
{
if(bFlash)
{
bFlash = 0;
RC0 ^= 1;
}

}

        }




这是一个简单的pic16f676的timer0中断闪烁灯,

用PICC9.60编译运行,

没用问题

出0入0汤圆

发表于 2009-7-14 21:18:32 | 显示全部楼层
公司还停留在877a阶段,就是因为编译器不好用的缘故

出0入0汤圆

发表于 2009-7-14 22:36:33 | 显示全部楼层
PIC 这些型号是怎么分的?

出0入0汤圆

发表于 2009-7-24 21:43:08 | 显示全部楼层
中国国内貌似也开始推这款芯片了,能完美替代877a么?

出0入0汤圆

发表于 2009-7-29 12:05:56 | 显示全部楼层
vpp电压最高  =9V,估计很多山寨 ICD2要挂了  ,哈哈好象现在出来的PIC16和18 的芯片 VPP电压都不高啊  没有原来的VPP= 13V 和  3.6V了

出0入0汤圆

发表于 2009-7-29 14:11:27 | 显示全部楼层
原版ICD2看来也不行。但PICkit2可以支持PIC16f19xx(只能在PICkit2 v2.61环境下支持运行)!

出0入0汤圆

发表于 2009-7-29 14:17:20 | 显示全部楼层
PIC16F722等器件也是这种情况。

出0入0汤圆

发表于 2009-7-29 19:33:55 | 显示全部楼层
"PICC18V950PL2,针对PIC18F45J10,一写中断代码就不行,950PL3就可以了。
怎么证明呢?用同样的代码。 "

the following code runs just fine on 12F675. it uses timer0 interrupt.

===========code======================
#include <htc.h>

__CONFIG (MCLRDIS & UNPROTECT & BORDIS & WDTDIS & INTIO & PWRTEN);

//hardware configuration
#define nLED        2                //LED on gpio2

unsigned char sGPIO;        //shadow gpio

void interrupt LED(void) {
        T0IF=0;                                        //clear the interrupt flag
        sGPIO ^=(1<<nLED);                //flash nLED pin
}

void
main(void)
{
        TRISIO=~(1<<nLED);                //all gpio pins to input other than nLED
        OPTION=0b11010111;                //setting up the options register;
        //       1                         //GPPU: pull-up disabled
        //        1                         //INTEDG: interrupt on rising edge
        //         0                        //T0CS: timer0 source select - internal clock cycle
        //          1                   //T0SE: timer0 edge select - interrupt on high-to-low transisiton
        //           0                        //PSA: prescaler selected to timer0
        //            111                //PS0..2: prescaler rate select - 111=256.
       
        GPPU=1; INTEDG=1;T0CS=0;T0SE=1;PSA=0;

        sGPIO=0;                                //clear gpio pins
       
        T0IE=1;                                        //enable timer 0 interrupt
        ei();                                        //enable global interrupt
       
        while (1){
                //TODO Auto-generated main function
                GPIO=sGPIO;
        }
}

出0入0汤圆

发表于 2009-7-29 23:19:04 | 显示全部楼层
and here is anonther WORKING example of using external interrupt. It runs just fine on 12F675.

==========code=============
//use the external push button for interrupt triggreing.

#include <htc.h>

__CONFIG (MCLRDIS & UNPROTECT & BORDIS & WDTDIS & INTIO & PWRTEN);

//hardware configuration
#define nButtonLED        1                        //Button LED on gpio1
#define MaxCnt                3                        //maximum count to flip the LED, 100000us

unsigned char sGPIO;        //shadow gpio

void interrupt LED(void) {
        static unsigned int T0Counter=MaxCnt;        //initialize t0 counter. "static" to retain value
        INTF=0;                                        //clear the interrupt flag
        T0Counter-=1;
        if (T0Counter==0) {
                T0Counter=MaxCnt;                //reset T0Counter
                sGPIO ^=(1<<nButtonLED);                //flash nLED pin
        }
}

void
main(void)
{
        TRISIO=~((1<<nButtonLED) | (1<<nLED));                //all gpio pins to input other than nLED and nButtonLED
        ANSEL=0x00;                                                                        //GPIO0 as input
        CMCON=0x07;                                                                        //turn off the comparators
        OPTION=0b01001000;                //setting up the options register;
        //       0                         //GPPU: pull-up enabled. Need to set WPUx bits
        //        0                         //INTEDG: interrupt on falling edge
        //         0                        //T0CS: timer0 source select - internal clock cycle
        //          0                   //T0SE: timer0 edge select - interrupt on high-to-low transisiton
        //           1                        //PSA: prescaler selected to watchdog
        //            000                //PS0..2: prescaler rate select - 000=1
        WPU0=1;                                        //enable weak pull-up on GPIO0
       
        //GPPU=1; INTEDG=1;T0CS=0;T0SE=1;PSA=0;

        sGPIO=0;                                //clear gpio pins
       
        INTE=1;                                        //enable external interrupt interrupt
        ei();                                        //enable global interrupt. = GIE=1;
       
        while (1){
                //TODO Auto-generated main function
                GPIO=sGPIO;                                                //change the port
        }
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 14:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表