hswkcg
发表于 2016-6-12 10:15:12
GunGun 发表于 2016-6-4 08:10
setup_adc (ADC_CLOCK_INTERNAL|ADC_TAD_MUL_0) ;
关于这个,在帮助文件里有以下的描述
Configures one of...
非常感谢你的回答,我想请问下能否根据我列的那些代码,帮我列下计算进中断的时钟周期的计算公式。还有你回答的这段也看不大明白,请指教,谢谢
hswkcg
发表于 2016-6-12 10:16:31
piccode 发表于 2016-6-8 20:03
SETUP_ADC(ADC_CLOCK_DIV_32);//转换时间设定
SETUP_ADC ...
我在195楼列出的问题,能帮我指教下吗,谢谢了
pic_flash
发表于 2016-7-14 10:48:47
PIC 编译器, CCS C
版本: PCWHD_V5.061(PIC 编译器)
百度云下载:
链接: http://pan.baidu.com/s/1i4XG7UP
密码: jmf6
chenhu2012
发表于 2016-7-23 16:10:33
感谢pic_flash的分享!{:titter:}
GunGun
发表于 2016-7-24 10:14:34
突然发现这个软件没有办法装在MPLABX3.0上?
gmyu
发表于 2016-9-14 15:30:47
pic_flash 发表于 2016-7-14 10:48
PIC 编译器, CCS C
版本: PCWHD_V5.061(PIC 编译器)
请教,LZ搞过24FJ32么,关于USB的,不知如何入手啊。怎么分host或者从模式?
chenhu2012
发表于 2016-9-16 14:14:37
请教:CCS PIC MODBUS库有哪位高手用过,发个例程。谢谢!
1328616904
发表于 2016-10-14 11:18:46
感谢分享,期待分享最新的CCS,喜欢用CCS
chenhu2012
发表于 2016-11-14 09:24:32
{:handshake:}
pic_flash
发表于 2016-11-15 06:06:18
PIC 编译器, CCS C
版本: PCWHD_V5.064(PIC 编译器)
百度云下载:
链接: http://pan.baidu.com/s/1bpGEKuN
密码: 3uwg
chenhu2012
发表于 2016-11-15 08:22:33
谢谢楼主!感谢分享!
GunGun
发表于 2016-11-15 09:00:31
pic_flash 发表于 2016-11-15 06:06
PIC 编译器, CCS C
版本: PCWHD_V5.064(PIC 编译器)
谢谢。谁能研究一下安装在最新版的MPLABX下?好像装不了?
pic_flash
发表于 2016-11-16 17:14:50
GunGun 发表于 2016-11-15 09:00
谢谢。谁能研究一下安装在最新版的MPLABX下?好像装不了?
我没有使用MPLAB X 的经验, 不过在官网找到这个, 你参考看看
Using CCS C Compiler in MPLAB® X
http://www.ccsinfo.com/content.php?page=mplab_support
视频教学
http://www.ccsinfo.com/videos/mplabx-plugin.wmv
GunGun
发表于 2016-11-16 17:28:58
谢谢楼上!
pic_flash
发表于 2016-12-4 10:27:05
PIC 编译器, CCS C
版本: PCWHD_V5.065(PIC 编译器)
百度云下载:
链接:http://pan.baidu.com/s/1boAZSsv
密码:aadq
korren
发表于 2016-12-4 12:14:46
pic_flash 发表于 2016-12-4 10:27
PIC 编译器, CCS C
版本: PCWHD_V5.065(PIC 编译器)
楼主好人呀,造福向我一样屌丝们!
chenhu2012
发表于 2016-12-4 18:33:38
谢谢LZ分享!
zenghouyun
发表于 2016-12-9 21:53:31
我初学PIC,使用的第一个PIC单片机是PIC12F675,用一个电位器调节输出脉冲的频率,用的是PICC X8 编译器。
zenghouyun
发表于 2016-12-9 21:58:08
我初学PIC,使用的第一个PIC单片机是PIC12F675,用一个电位器调节输出脉冲的频率,用的是PICC X8 编译器。
pic_flash
发表于 2016-12-18 16:23:59
zenghouyun 发表于 2016-12-9 21:58
我初学PIC,使用的第一个PIC单片机是PIC12F675,用一个电位器调节输出脉冲的频率,用的是PICC X8 编译器。 ...
建议使用12F1501, 比12F675 强大。
jiang887786
发表于 2017-1-21 16:02:55
楼主,有没有PIC24fj128的开发光盘吗?共享一下啊!谢谢
gmyu
发表于 2017-1-21 22:33:04
jiang887786 发表于 2017-1-21 16:02
楼主,有没有PIC24fj128的开发光盘吗?共享一下啊!谢谢
这种有usb host的不知道能否连接rt8188?
我要你的目光
发表于 2017-1-22 22:17:57
pic_flash 发表于 2015-1-3 10:19
我最近犯了一个错误。。就是忽略了PIC 16F1827 的一个 fail-safe clock monitor。
Fail-safe clock monitor ...
因为这个问题,我们批量出去的产品全部返修了……
jiang887786
发表于 2017-1-29 17:15:52
gmyu 发表于 2017-1-21 22:33
这种有usb host的不知道能否连接rt8188?
不知道啊,还没有入门呢!
chenhu2012
发表于 2017-2-11 21:54:35
2017年,座等LZ更新。{:titter:}{:titter:}{:titter:}
pic_flash
发表于 2017-2-12 16:56:32
chenhu2012 发表于 2017-2-11 21:54
2017年,座等LZ更新。
目前是 有的是PCWHD_V5.066 。。待会 分享
pic_flash
发表于 2017-2-12 17:15:04
PIC 编译器, CCS C
版本: PCWHD_V5.066(PIC 编译器)
百度云下载:
链接:http://pan.baidu.com/s/1mhOY13E
密码:jrwl
chenhu2012
发表于 2017-2-12 17:19:10
谢谢LZ!{:handshake:}{:handshake:}{:handshake:}
chenhu2012
发表于 2017-2-14 10:29:26
pic_flash 高手:请教个问题。我用PIC16LF1829做2个串口测试时,单个使用时都可以与上位机通信(硬件没问题)。但同时使用时,只能用 XMIT=PIN_C4,RCV=PIN_C5 。程序如下:(帮分析下)
#include <16LF1829.h>
#use delay(crystal=20000000)
#use standard_io(A)
#use standard_io(B)
#use standard_io(C)
void TestRS232PortA();
void TestRS232PortB();
void main()
{
delay_ms(500);
while(TRUE)
{
TestRS232PortA();
delay_ms(20);
TestRS232PortB();
delay_ms(20);
output_toggle(PIN_C0);
}
}
void TestRS232PortA();
void TestRS232PortA()
{
#use RS232(BAUD=9600,XMIT=PIN_B7,RCV=PIN_B5)
printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\r");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n\r");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\r");
}
void TestRS232PortB();
void TestRS232PortB()
{
#use RS232(BAUD=9600,XMIT=PIN_C4,RCV=PIN_C5)
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\r");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n\r");
printf("///////////////////////////////////////////////////\n\r");
}
chenhu2012
发表于 2017-2-14 10:33:57
附:PIC16LF1829数据手册
chenhu2012
发表于 2017-2-14 11:50:07
仔细看了下数据手册,搞定了,如下:
#use standard_io(A)
#use standard_io(B)
#use standard_io(C)
#BIT Rx = 0x11D.7
#BIT Tx = 0x11D.2
void TestRS232PortA();
void TestRS232PortB();
void main()
{
delay_ms(500);
while(TRUE)
{
TestRS232PortA();
delay_ms(20);
TestRS232PortB();
delay_ms(20);
output_toggle(PIN_C0);
}
}
void TestRS232PortA();
void TestRS232PortA()
{
Rx=0;Tx=0;
#use RS232(BAUD=9600,XMIT=PIN_B7,RCV=PIN_B5)
printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\r");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n\r");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\r");
}
void TestRS232PortB();
void TestRS232PortB()
{
Rx=1;Tx=1;
#use RS232(BAUD=9600,XMIT=PIN_C4,RCV=PIN_C5)
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n\r");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n\r");
printf("///////////////////////////////////////////////////\n\r");
}
pic_flash
发表于 2017-2-14 23:07:41
本帖最后由 pic_flash 于 2017-2-14 23:08 编辑
chenhu2012 发表于 2017-2-14 11:50
仔细看了下数据手册,搞定了,如下:
#use standard_io(A)
#use standard_io(B)
你可以用stream
16F887
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,stream=port1, ERRORS, UART1 )
#use rs232(baud=1200, rcv=PIN_B0,stream=port2, ERRORS)
fprintf(port1,"\n\r11111111111111111");
fprintf(port2,"\n\r22222222222222222");
chenhu2012
发表于 2017-2-17 09:59:08
pic_flash 发表于 2017-2-14 23:07
你可以用stream
16F887
pic_flash先生:这两天出差回来确认下,您教的方法可行。谢谢!新问题:如果这个时候用接收或发送中断,MCU是怎么判定的呢?
pic_flash
发表于 2017-2-17 14:35:59
chenhu2012 发表于 2017-2-17 09:59
pic_flash先生:这两天出差回来确认下,您教的方法可行。谢谢!新问题:如果这个时候用接收或发送中断,M ...
我记得我还欠你一个程序范例, 那个让我整理一下。。。
我稍后发一个 UART中断的范例给你试试。。
请问你用什么PIC芯片? 我用你的型号做例子, 仿真
chenhu2012
发表于 2017-2-17 18:31:04
我用的是PIC16LF1829,230楼有数据手册。谢谢!
pic_flash
发表于 2017-2-17 20:35:22
chenhu2012 发表于 2017-2-17 18:31
我用的是PIC16LF1829,230楼有数据手册。谢谢!
我找了官方的范例, 你看看。。。
下面是使用中断接收, 你熟悉了再搞发送中断
#include <16F1829.h>
#device *=16 ADC=10
#fuses INTRC_IO, PROTECT,NoWDT,put,NoBrownout,nolvp
#use delay(internal=32Mhz, restart_wdt)
#use rs232(baud=9600, xmit=PIN_B7, rcv=PIN_B5,ERRORS)
#define BUFFER_SIZE 32// 缓存32字节
BYTE buffer;
BYTE next_in = 0;
BYTE next_out = 0;
#int_rda
void serial_isr()
{
int t;
buffer=getc();
t=next_in;
next_in=(next_in+1) % BUFFER_SIZE;
if(next_in==next_out)
next_in=t; // Buffer full !!
}
#define bkbhit (next_in!=next_out)
BYTE bgetc()
{
BYTE c;
while(!bkbhit) ;
c=buffer;
next_out=(next_out+1) % BUFFER_SIZE;
return(c);
}
void main()
{
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
printf("\r\n\Running...\r\n");
while(1)
{
// 延时10秒, 输入一些字符到USART
delay_ms(10000);
// 显示收到的缓冲
printf("\r\nBuffered data => ");
while(bkbhit)
{
putc( bgetc() );
}
}
}
chenhu2012
发表于 2017-2-18 09:16:25
pic_flash 发表于 2017-2-17 20:35
我找了官方的范例, 你看看。。。
下面是使用中断接收, 你熟悉了再搞发送中断
十分感谢楼主的大力支持!
chenhu2012
发表于 2017-2-18 21:46:50
chenhu2012 发表于 2017-2-18 09:16
十分感谢楼主的大力支持!
谢谢pic_flash先生!{:handshake:}
pic_flash
发表于 2017-3-30 16:55:53
本帖最后由 pic_flash 于 2017-3-30 16:59 编辑
今天修改客户送来的一个延时器, 看是很简单, 但是不能按要求操作。。他提供了C 源码 (HTC 编译器)。
检查后, 发现是程序臭虫, GP0,1,2 是连接 DIP 开关, DIP 的另一端接地。
这个需要上拉电阻, 原程序有启动了弱上拉。。但是, 问题出在, GP2是不支持弱上拉的, 我查了手册才知道。
因为之前的源码是按照HTC C 写的, 写到也很乱, 需要的延时又不准, 误差大。
所以我决定从新写过。。
在写的过程, 我发现不能 用set_pullup();也不能用port_x_pullups ( ) 指令, CCS 报错。
那么就只好自己控制Pull up 了。。查了手册, 是在Option 的 bit 6.
问题是, Option 是一个没有地址的寄存器, CCS 要怎样修改OPTION 的值呢?
需要借助ASM ,方法如下,
#include <12F508.H>
#fusesIntrc,noPROTECT,WDT,nomclr
#use delay(clock=4000000,restart_wdt)
#define set_options(value) {#ASM \
MOVLWvalue \
OPTION \
#ENDASM}
void main (void)
{
set_options(0b10010111) ; // Bit 6=0.使能弱上拉
While(1);
}
希望上面的技巧能帮助到CCS 同好。。{:smile:}
chenhu2012
发表于 2017-3-30 21:15:05
楼主威武!
chenhu2012
发表于 2017-3-30 21:17:25
如果是没地址,寄存器在PIC内是怎么控制的呢?
pic_flash
发表于 2017-3-30 22:40:18
12F508 应该是继承相容当年老旧的12C508 ,以前12C508 是很简单的, 一个timer, I/O, 中断也没有,。。 那时编程也多是写ASM 的,写 ”OPTION” MPLAB 自动知道是什么。。后来的12F629 的 OPTION 寄存器是有地址的了。。
chenhu2012
发表于 2017-5-12 12:53:49
pic_flash 先生:您有PIC芯片MODBUS通信协议的例子吗?如果有这方面的经验,请指导我下。谢谢!
pcr386
发表于 2017-5-13 09:06:37
不知道是不是支持台系的高仿PIC呢。有没有相关范例?如义隆,飞凌之类的?
pic_flash
发表于 2017-5-14 11:13:45
本帖最后由 pic_flash 于 2017-5-14 11:17 编辑
chenhu2012 发表于 2017-5-12 12:53
pic_flash 先生:您有PIC芯片MODBUS通信协议的例子吗?如果有这方面的经验,请指导我下。谢谢! ...
MODBUS 我没搞过, 您可以参考:
http://www.ccsinfo.com/forum/viewtopic.php?t=19306&highlight=modbus
http://www.ccsinfo.com/forum/viewtopic.php?t=29537&highlight=modbus
建议:
http://www.ccsinfo.com/forum/search.php
搜索MODBUS, 有大量的零粹范例
pic_flash
发表于 2017-5-14 11:15:49
pcr386 发表于 2017-5-13 09:06
不知道是不是支持台系的高仿PIC呢。有没有相关范例?如义隆,飞凌之类的?
CCS C 是支持官方PIC 的。。至于高仿的, 如果是真高仿100%相容,那么是支持的。。
chenhu2012
发表于 2017-5-15 08:13:55
pic_flash 发表于 2017-5-14 11:13
MODBUS 我没搞过, 您可以参考:
http://www.ccsinfo.com/forum/viewtopic.php?t=19306&highlight=modbus ...
谢谢LZ的支持!我先看下,捣鼓捣鼓。有问题再请教您!
chenhu2012
发表于 2017-5-22 14:44:56
pic_flash 先生:您好!我第一次用PIC24FJ128GA010芯片,定时器中断不是按我程序运行的,请帮我确认下是什么问题,谢谢!【芯片其它功能都能正常】
#use delay(clock=20MHz, xtal=20MHz)//MCU工作时钟设定
setup_timer4(TMR_INTERNAL | TMR_DIV_BY_1); //使用内部时钟,预分频1 【Timer4是16位定时器,最大计数65536】
set_timer4(55536); //2ms 【因为是用20MHz的晶振,1次计数时间为0.2us ;0.2us*10000=2ms】
enable_interrupts(INT_TIMER4); //打开Timer4中断充许
enable_interrupts(GLOBAL); //打开总中断充许
#INT_TIMER4 //Timer4中断处理函数
void InterruptsTimer4()
{
;
}
pic_flash
发表于 2017-5-22 19:46:16
本帖最后由 pic_flash 于 2017-5-22 19:53 编辑
chenhu2012 发表于 2017-5-22 14:44
pic_flash 先生:您好!我第一次用PIC24FJ128GA010芯片,定时器中断不是按我程序运行的,请帮我确认下是什 ...
#include <24FJ128GA010.h>
#device ICSP=1
#use delay(crystal=20000000)
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOJTAG //JTAG disabled
#INT_TIMER4
voidtimer4_isr(void)
{
// 2ms 中断一次
}
void main()
{
setup_timer4(TMR_INTERNAL | TMR_DIV_BY_8, 2500);// 2.000 ms
enable_interrupts(INT_TIMER4);
enable_interrupts(INTR_GLOBAL);
while(TRUE)
{
//TODO: User Code
}
}
上面的代码, 是使用PIC24 wizard 产生是, Timer4 每2ms中断一次。。试试看。。
chenhu2012
发表于 2017-5-23 08:39:28
pic_flash 先生:您好!十分感谢!可以正常运行,但有点不解:
2ms = 0.05us * 2 * 2500 * 8
【晶振时钟*机器周期*初始化值*预分频】
机器周期为什么不是4呢?
pic_flash
发表于 2017-5-25 15:33:11
本帖最后由 pic_flash 于 2017-5-25 15:34 编辑
chenhu2012 发表于 2017-5-23 08:39
pic_flash 先生:您好!十分感谢!可以正常运行,但有点不解:
2ms = 0.05us * 2 * ...
PIC24 的结构和 PIC16 Fosc/4(RISC) 不一样。。
PIC24 的指令只要 2 机器周期 Fosc/2。
手册有资料:
chenhu2012
发表于 2017-5-26 19:47:39
明白了,谢谢楼主!
chenhu2012
发表于 2017-5-31 20:13:01
pic_flash 先生:请教个问题。PIC CCS编译器中fprintf不能正确输出浮点数且程序没有任何动作。程序如下:
H文件:
#include <24FJ128GA010.h>
#device ICSP=1
#device ADC=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOJTAG //JTAG disabled
#FUSES CKSFSM //Clock Switching is enabled, fail Safe clock monitor is enabled
//#FUSES HS
#use delay(clock=40MHz, xtal=40MHz)
#use rs232(baud=115200,xmit=PIN_F3,rcv=PIN_F2,bits=8,stream=COM1)
#use rs232(baud=115200,xmit=PIN_F5,rcv=PIN_F4,bits=8,stream=COM2)
C文件:
#include<TestPIC24FJ128.h>
#include<stdlib.h>
#include<stdio.h>
void main()
{
delay_ms(500);
float Z1=3.14;
int64 Z2=0;
while(TRUE)
{
Z2 = Z1 * 10000;
fprintf(COM1,"Z2= %lu\n\r",Z2);
fprintf(COM2,"X = %lu\n\r",123 );
}
}
chenhu2012
发表于 2017-5-31 20:16:18
chenhu2012 发表于 2017-5-31 20:13
pic_flash 先生:请教个问题。PIC CCS编译器中fprintf不能正确输出浮点数且程序没有任何动作。程序如下:
H ...
输出浮点数以外的格式,没有问题。查了下资料,说是要用标准输出函数,但我已经使用了。
If fprintf() is used then the specified stream is used where printf() defaults to STDOUT (the last USE RS232).
pic_flash
发表于 2017-6-2 11:26:21
本帖最后由 pic_flash 于 2017-6-2 11:32 编辑
int64 没有弄过。。
%lu 是给long
%f 是float
printf 可能无法显示64位, 我不确定。。
你这行应该不对。。 fprintf(COM1,"Z2= %lu\n\r",Z2);
64位不知道怎样显示...
我也不知道 64位的运算结果正确吗。。可能你先显示hex?
pic_flash
发表于 2017-6-2 11:29:30
本帖最后由 pic_flash 于 2017-6-2 11:35 编辑
下面是Telmah 大大的源码,他自己另外写来做64位运算的.
我没有验证过, 只是给你参考
来源: http://www.ccsinfo.com/forum/viewtopic.php?t=28815
union bits64 {
int8 b;
int32 w;
};
typedef union bits64 int64;
int64 scratch64;
int1 BORROW=FALSE;
#bit CARRY=0xFD8.0
//Macro to add two 64bit values. Result into the first
#define M_add64x64(M_a,M_b) \
#asm\
movf M_b.b,0\
addwf M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
movf M_b.b,0\
addwfc M_a.b,1\
#endasm
//Macro as above, to subtract two 64bit values.
#define M_sub64x64(M_a,M_b) \
#asm\
movf M_b.b,0\
subwf M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
movf M_b.b,0\
subwfb M_a.b,1\
#endasm
//Macros to shift a 64bit value
#define M_shiftleft64(x) shift_left(&x,8,0)
#define M_shiftright64(x) shift_right(&x,8,0)
//Macro to zero a 64bit value
#define M_zero64(x) x.w=0L;x.w=0L
#define M_iszero64(x) ((x.w==0L)&&(x.w==0L))
#define bit64_set(x,i) x.b|=(1<<(i&7))
int64 cast32x64(int32 a) {
//routine to convert a 32bit int to 64bit
int64 temp;
int8 i;
temp.w=a;
//and clear the top half
temp.w=0L;
return temp;
}
int64 I_A_LT_B(int64 a,int64 b) {
//Internal routine to _compare_ two 64 bit values
//Actually performs subtraction, and returns this, with the 'borrow'
//flag in the global variable 'BORROW'. Performs a-b, hence flag is
//set if A less than B
M_sub64x64(a,b);
if (CARRY==0) BORROW=TRUE;
else BORROW=FALSE;
return a;
}
int64 add64x64(int64 a,int64 b) {
//simple 64 bit addition call - returns (a+b)
M_add64x64(a,b);
return a;
}
int64 sub64x64(int64 a,int64 b) {
//64 bit subtraction call as above - returns (a-b)
M_sub64x64(a,b);
return a;
}
int64 mult32x32(int32 a,int32 b) {
//Routine to multiply two 32bit values with a 64bit result
int64 temp2;
int8 i;
//zero output
M_zero64(temp2);
//Not trying to break any records for efficiency, so all in C, and not using
//hardware multiply
//start by moving the int32, into the low half of the int64
scratch64=cast32x64(b);
//Now need to work through all 32 bits in the 'a' variable
for (i=0;i<32;i++) {
//if source bit in 'a' is one, perform addition
if (bit_test(a,i))
M_add64x64(temp2,scratch64);
//rotate the second value here
M_shiftleft64(scratch64);
}
return temp2;
}
int64 div64x64(int64 a,int64 b) {
//Routine to divide 'a' by 'b' in 64bit arithmetic
//returns with result, leaving remainder in the scratch64
int8 bitno=0,ctr;
int64 temp;
if (M_iszero64(b)) {
if (!M_iszero64(a)) {
//need maximum result
temp.w=temp.w=0xFFFFFFFF;
M_zero64(scratch64);
return temp;
}
//Else 0/0=1
M_zero64(temp);
M_zero64(scratch64);
temp.b=1;
return temp;
//return 1
}
M_zero64(temp);
bitno=0;
//Now position divisor to suit find top bit in A, and rotate b till it's
//top bit is in the same position
if (a.w!=0) {
for(ctr=31;!bit_test(a.w, ctr);ctr--) ;
//Now rotate b till it's top bit matches.
while (!bit_test(b.w, ctr)) {
M_shiftleft64(b);
++bitno;
}
}
else {
for(ctr=31;!bit_test(a.w, ctr);ctr--) ;
bitno=ctr;
//Now rotate b till it's top bit matches.
while (!bit_test(b.w, ctr)) {
M_shiftleft64(b);
++bitno;
}
}
//bitno now stores how far b had to rotate
while (bitno) {
//Loop for bitno bits, performing subtract, shift & test
scratch64=I_A_LT_B(a,b);
if (!BORROW) {
a=scratch64;
//Set output bit if no borrow
bit64_set(temp,bitno);
}
if (M_iszero64(a)) break;
M_shiftright64(b);
bitno--;
}
scratch64=a;
return temp;
}
chenhu2012
发表于 2017-6-3 09:10:46
pic_flash 发表于 2017-6-2 11:29
下面是Telmah 大大的源码,他自己另外写来做64位运算的.
我没有验证过, 只是给你参考
来源: http://www. ...
PIC_FLASH先生:您好!float64没折腾出来, flaot32也能满足要求。但用” fprintf“不能正常输出,单个串口” printf“可正常使用。测试代码如下:
【因我必须要用2个串口,请帮我确认下,谢谢。】
C文件:
#include<TestPIC24FJ128.h>
#include<stdlib.h>
#include<stdio.h>
flaot32TestValue[ ] = {1234.56,2345.78,3456.89};
void main()
{
delay_ms(500);
while(TRUE)
{
fprintf(COM1,"TestValue=%4.2f \n\r",TestValue);
fprintf(COM2,"TestValue = %4.2 f\n\r",TestValue);
}
}
pic_flash
发表于 2017-6-3 12:48:51
#use rs232(baud=115200,xmit=PIN_F3,rcv=PIN_F2,bits=8,stream=COM1)
#use rs232(baud=115200,xmit=PIN_F5,rcv=PIN_F4,bits=8,stream=COM2)
fprintf(COM1,"TestValue=%4.2f \n\r",TestValue);
fprintf(COM2,"TestValue = %4.2f\n\r",TestValue);/// 4.2f 要连起
chenhu2012
发表于 2017-8-10 22:13:36
最近有点小忙,没来。顶顶!
korren
发表于 2017-8-17 10:48:17
pic_flash 发表于 2017-6-3 12:48
#use rs232(baud=115200,xmit=PIN_F3,rcv=PIN_F2,bits=8,stream=COM1)
#use rs232(baud=115200,xmit=PIN_F5 ...
楼主,又没有新版的编译器?
pic_flash
发表于 2017-8-17 11:02:13
korren 发表于 2017-8-17 10:48
楼主,又没有新版的编译器?
有 5.073, 但是据说有臭虫, 就不提供了。。
其他更新的版本还没有资源
chenhu2012
发表于 2017-8-27 21:38:04
顶顶,哈...!
chenhu2012
发表于 2017-9-5 12:35:39
pic_flash先生:有没有PIC关于FIFO的串口发送与接收的程序,搞了半天,没折腾出来{:titter:}{:titter:}{:titter:}
pic_flash
发表于 2017-9-7 17:00:36
chenhu2012 发表于 2017-9-5 12:35
pic_flash先生:有没有PIC关于FIFO的串口发送与接收的程序,搞了半天,没折腾出来{:ti ...
你是指串口接收缓存吗? 看看你的源码?
gmyu
发表于 2017-9-7 18:17:01
pic_flash 发表于 2017-9-7 17:00
你是指串口接收缓存吗? 看看你的源码?
CCS是不是只支持ICD调试啊?手上有个kit3只能在外部下载,论坛有出ICD的没有,多少钱能搞一个?
pic_flash
发表于 2017-9-7 22:49:48
gmyu 发表于 2017-9-7 18:17
CCS是不是只支持ICD调试啊?手上有个kit3只能在外部下载,论坛有出ICD的没有,多少钱能搞一个? ...
使用CCS C 的IDE是不可以使用PICKIT3。
但是, 你可以使用MPLAB 配PICKIT3, + CCS C 编译器
http://www.ccsinfo.com/downloads.php
也参考:
https://www.ccsinfo.com/faq.php?page=icd2_real_ice
gmyu
发表于 2017-9-8 11:03:14
pic_flash 发表于 2017-9-7 22:49
使用CCS C 的IDE是不可以使用PICKIT3。
但是, 你可以使用MPLAB 配PICKIT3, + CCS C 编译器
谢谢,64位win7,提示要32位的jvm.dll. 搞不定,继续用MPLAB IPE。
chenhu2012
发表于 2017-9-8 11:52:29
pic_flash 发表于 2017-9-7 17:00
你是指串口接收缓存吗? 看看你的源码?
#define TxBufferSize32
char TxBuffer; //缓冲器
char UARToutLenhgs=0,TxIndexWr=0,TxIndexRe=0;
unsigned UARTputOneByteIn(char OneByte);
unsigned UARTputOneByteIn(char OneByte)
{
if(UARToutLenhgs==TxBufferSize )//缓冲器已满,返回0
{
return(0);
}
disable_interrupts(INT_TBE); //存字节到缓冲器前关闭发送?
UARToutLenhgs=UARToutLenhgs + 1 ;//待发送字节数加1
TxBuffer = OneByte; //发送字节数通过写指针写到缓冲器
TxIndexWr = TxIndexWr + 1; //写指针加1
if(TxIndexWr >= TxBufferSize) //判定是否越界
{
TxIndexW=0;
}
enable_interrupts(INT_TBE);
return(1); //返回发送成功标志
}
#INT_TBE
void UART1TxInterrupt()
{
if(UARToutLenhgs>0)
{
UARToutLenhgs = UARToutLenhgs - 1 ;
putc(TxBuffer);
TxIndexRe = TxIndexRe + 1;
if(TxIndexRe==TxBufferSize)
{
TxIndexRe=0;
}
}
else
{
disable_interrupts(INT_TBE);
}
}
pic_flash
发表于 2017-9-12 09:09:39
/////////////////////////////////////////////////////////////////////////
//// EX_RS232_BUFFER.C ////
//Comment out following define if you don't want to use TBE interrupt to
//transmit data.
#define USE_TX_ISR
#if defined(__PCM__)
#include <16F887.h>
#fuses NOWDT
#use delay(crystal=20MHz)
#elif defined(__PCH__)
#include <18F45K22.h>
#fuses NOWDT
#use delay(crystal=16MHz)
#elif defined(__PCD__)
#include <24FJ128GA006.h>
#fuses NOWDT
#use delay(crystal=20MHz)
#endif
#ifdef USE_TX_ISR
#use rs232(UART1, BAUD=9600, RECEIVE_BUFFER=32, TRANSMIT_BUFFER=32, TXISR)
#else
#use rs232(UART1, BAUD=9600, RECEIVE_BUFFER=32, TRANSMIT_BUFFER=32)
#endif
void main()
{
char c;
printf("\r\nEX_RS232_BUFFER.c\r\n\n");
enable_interrupts(GLOBAL);
while(TRUE)
{
#ifndef USE_TX_ISR
putc_send(); //When not using the TXISR option with a HW UART
//this needs called often to cause data be moved
//from software buffer to HW transmit register.
//If using a software UART it also needs called to
//transmit data.
#endif
if(kbhit())
{
c = getc();
putc(c);
if(c == '\r')
putc('\n');
else if(c == '\b')
{
putc(' ');
putc(c);
}
}
}
}
范例里面有个 EX_RS232_BUFFER.C
用内建USART, 他自动插入发送和接收缓存功能, 我个人没有使用过, 貌似CCS C 的新内建功能。
#use rs232(UART1, BAUD=9600, RECEIVE_BUFFER=32, TRANSMIT_BUFFER=32, TXISR)
可以先看看, 如果不适合, 还有其他的方法的
korren
发表于 2017-9-20 09:19:23
pic_flash 发表于 2017-9-12 09:09
范例里面有个 EX_RS232_BUFFER.C
用内建USART, 他自动插入发送和接收缓存功能, 我个人没有使用过, 貌 ...
楼主,有新版的编译器更新吗?
pic_flash
发表于 2017-9-20 20:38:22
PIC 编译器, CCS C
版本: PCWHD_V5.074(PIC 编译器)
百度云下载:
链接:http://pan.baidu.com/s/1qY0Wl6c
密码:waef
pic_flash
发表于 2017-9-20 20:45:40
korren 发表于 2017-9-20 09:19
楼主,有新版的编译器更新吗?
更新了, 需要就下载收藏。
korren
发表于 2017-9-21 08:47:09
pic_flash 发表于 2017-9-20 20:45
更新了, 需要就下载收藏。
谢谢! 楼主.
gmyu
发表于 2017-9-21 08:59:25
pic_flash 发表于 2017-9-20 20:45
更新了, 需要就下载收藏。
Thanks!!!!
korren
发表于 2017-9-21 11:35:43
pic_flash 发表于 2017-9-20 20:45
更新了, 需要就下载收藏。
pic_flash, 请教一下在CCS IDE怎样设置编译器的优化级别.
pic_flash
发表于 2017-9-21 15:29:29
korren 发表于 2017-9-21 11:35
pic_flash, 请教一下在CCS IDE怎样设置编译器的优化级别.
优化是使用内建指令
#opt x
x 是1~9
9 是最小空间
1 是最快速度, 但是空间大。。
我都是使用默认的设定
chenhu2012
发表于 2017-10-16 22:28:51
出差刚回来,顶顶!
chenhu2012
发表于 2017-11-1 23:50:39
{:handshake:}
chenhu2012
发表于 2017-11-30 19:46:34
{:titter:}{:titter:}{:titter:}
chenhu2012
发表于 2017-12-27 17:05:39
出差刚回来,顶顶!
pic_flash
发表于 2017-12-27 21:17:43
PIC 编译器, CCS C
版本: PCWHD_V5.075(PIC 编译器)
百度云下载:
链接:https://pan.baidu.com/s/1slWNC2D
密码:5m1e
chenhu2012
发表于 2018-1-2 19:59:27
谢谢楼主!
skype
发表于 2018-1-5 11:21:25
PICC, 8位机,一直没有换过或升级过。
chenhu2012
发表于 2018-1-25 08:02:33
{:handshake:}
zoto
发表于 2018-2-22 23:26:37
太感谢lz了。搞picc单片机 这里是大本营!!
chenhu2012
发表于 2018-2-24 13:48:13
LZ,新年快乐!
wind2100
发表于 2018-3-6 16:06:57
用过CCSTI 的MSP430 用它比较好 PIC32也能用吗?
pic_flash
发表于 2018-3-7 18:52:30
wind2100 发表于 2018-3-6 16:06
用过CCSTI 的MSP430 用它比较好 PIC32也能用吗?
PIC32 目前还不支持, 架构不一样, 未来不知道。。
pic_flash
发表于 2018-3-7 18:56:52
wind2100 发表于 2018-3-6 16:06
用过CCSTI 的MSP430 用它比较好 PIC32也能用吗?
TI 的CCS (Code Composer Studio ) 和本帖的CCS(Custom Computer Service, 公司名)不一样
wind2100
发表于 2018-3-8 08:59:52
整个界面就明白 了
pic_flash
发表于 2018-3-8 11:11:48
wind2100 发表于 2018-3-8 08:59
整个界面就明白 了
不是TI 的CCS
chenhu2012
发表于 2018-3-24 16:23:04
顶顶!{:lol:}
chenhu2012
发表于 2018-3-24 19:55:20
pic_flash 发表于 2017-12-27 21:17
PIC 编译器, CCS C
版本: PCWHD_V5.075(PIC 编译器)
楼主:有没有PIC 控制电机定们方面的?
pic_flash
发表于 2018-3-27 10:53:54
chenhu2012 发表于 2018-3-24 19:55
楼主:有没有PIC 控制电机定们方面的?
试试在这里搜索找一下。。
https://www.ccsinfo.com/forum/
korren
发表于 2018-4-9 12:47:33
pic_flash 发表于 2017-12-27 21:17
PIC 编译器, CCS C
版本: PCWHD_V5.075(PIC 编译器)
楼主, 5.078可以上传一下吗?这个编译不错,下次我打算做一个USB-ICD来玩玩.
pic_flash
发表于 2018-4-9 21:10:00
PIC 编译器, CCS C
版本: PCWHD_V5.078(PIC 编译器)
链接:https://pan.baidu.com/s/1TWVWNwWF5GdxFj9sdAtI_A
密码:lo1l
chenhu2012
发表于 2018-4-13 17:12:30
LZ威武!
chenhu2012
发表于 2018-4-27 19:15:38
{:handshake:}
chenhu2012
发表于 2018-5-9 19:35:24
看看楼主,谢谢分享。
chenhu2012
发表于 2018-5-19 20:46:41
看看楼主{:handshake:}