• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (358041339)




C30 大数组问题
#1
新會員
新會員


请问下C30如何定义一个大于32K的数组?小于32K的话可以用PSV,大于32K的话一直编译不通过?老师们请帮忙.const unsigned char buffer[350000]写在FLASH中,然后用查表的方式 ,可就是不行.说数组太大了,难道没有解决的方法吗?

發表於: 2008/6/11 10:19
頂部


进不了捕捉中断,烦死了!!
#2
新會員
新會員


#include "p33FJ32GP204.h"
_FOSCSEL(FNOSC_PRI&IESO_OFF);
_FOSC(FCKSM_CSDCMD&OSCIOFNC_ON&POSCMD_XT);
_FWDT(FWDTEN_OFF);

unsigned int a;

void main(void)
{ IPC0bits.IC1IP0=1;
IPC0bits.IC1IP1=0;
IPC0bits.IC1IP2=0;
IFS0bits.IC1IF=0;
IEC0bits.IC1IE=1;
AD1PCFGL = 0XFFFF;
__builtin_write_OSCCONL(OSCCON&0xbf); //unlock

RPINR7 = 0x1F04;

__builtin_write_OSCCONL(OSCCON|0x40); // lock

TRISB=0XFFFF;
T2CON=0X0000;
T2CONbits.TON=1;
IC1CON=0X0083;
while(1)

{
;
}
}
void __attribute__((__interrupt__)) _IC1Interrupt( void )
{
if(IEC0bits.IC1IE&IFS0bits.IC1IF)
{
a=IC1BUF;
TMR2 = 0;
IFS0bits.IC1IF = 0;
}
}

用其他30或33系列的都可以,就是33FJ32GP204不行,真郁闷.各位大大能不能帮我看下.TKS.

發表於: 2008/6/6 9:17
頂部


请教16F677A/D问题
#3
新會員
新會員


各位大大:以下我是A/D初始化的程序,该程序用仿真可以通过,但是在目标板上A/D转换的数值不对,请大家帮忙看下是什么问题?谢谢.
;************* 硬件初始化 **************
BCF STATUS,RP1 ;选体0为当前体
BCF STATUS,RP0
CLRF INTCON ;中断控制寄存器清零
MOVLW 80H
MOVWF PORTA ;PORTA初始化
CLRF PORTB ;PORTB初始化
MOVLW 0C0H
MOVWF PORTC ;PORTC初始化

BSF STATUS,RP1 ;BANK 2
MOVLW 70H ;RC<2:0>为模拟输入AN<6:4>
MOVWF ANSEL
MOVLW 0CH ;RB<5:4>为模拟输入AN<11:10>
MOVWF ANSELH

CLRF WPUB ;禁止PORTB弱上拉
CLRF IOCB ;禁止PORTB引脚中断

BSF STATUS,RP0 ;BANK 1
BCF STATUS,RP1

MOVLW B'01100101' ;振荡器控制,稳定的4MHZ内部振荡器作为时钟
MOVWF OSCCON
CLRF WPUA ;禁止PORTA弱上拉
CLRF IOCA ;禁止PORTA引脚中断
MOVLW 00H ;RA<5:4>为输出,其余未定义
MOVWF TRISA
MOVLW B'00110000' ;RB<5:4>为模拟输入,RB<7:6>为数字输出
MOVWF TRISB
MOVLW B'00000111' ;RC<2:0>为模拟输入,其余为数字输出
MOVWF TRISC

MOVLW 50H ;A/D转换时钟频率为 Fosc/16;如果选FRC内部振荡器,则置为30H
MOVWF ADCON1



BCF STATUS,RP0 ;恢复体0为当前体


;*********** 以下是对通道4进行A/D转换,结果送到TEMP2、TEMP1中 ******************

MOVLW B'00010000' ;选择通道AN4。
MOVWF ANI
CALL SAD
MOVF ADL,W ;10位A/D结果送到TEMP2、TEMP1中。
MOVWF TEMP1
MOVF ADH,W
MOVWF TEMP2





發表於: 2008/5/4 13:46
頂部


定义变量的顺序有什么说法吗?
#4
新會員
新會員


程序有一个.h文件和一个.c文件组成。
.h文件中定义的是程序中的全局变量和 函数的声明。
.c文件中是程序的主代码。

现在只是改变.h文件中的变量的 顺序,而.c文件没有做任何改变。

但是程序运行起来,就出现问题,比如原来按键好使的现在不好使了。

请指教

改变前的.h文件
//配置菜单-额定值
uint rated_value[3]; //额定频率 , 额定电压, 额定功率
uint running_value[13]; //设置菜单-运行设定值
uint protect_value[13]; //设置菜单-保护设定值

uchar menu_buffer[38][16];
uchar menu_display[4][16];
uchar rc_buff[48]; //接收缓存
uchar tx_buff[48]; //发送缓存
//uchar KR[20];
//uchar PS[38];
//密码1,由程序固化,用户不可修改 “上,下,左,右,左,右,确定,退出”
uchar password0[8]={8,4,2,10,2,10,32,1};
uchar password1[8]; //密码2,address:0x08----0x15
uchar password2[8]; //密码3,address:0x16----0x23


uint count_key;
uint tmr1_count;
uint L_run_count; //控制运行灯LED1
uint error_time; //接收错误次数
uint correct_time; //接收正确次数

uchar rc_time; //接收时间
uchar key_zhi, keyb, keyb1;

//配置菜单-单元设置
uchar address_value; //单元地址,
uchar year_value; //年,
uchar month_value; //月,
uchar day_value; //日,
uchar week_day; //日,
uchar hour_value; //小时,
uchar minute_value; //分,
uchar second_value; //秒


uchar PSV[30]; //设置菜单-保护板设定值-保护设定值
uchar FSV[30];//设置菜单-保护板设定值-故障设定值
uchar JSV[30]; //设置菜单--保护板设定值-速停故障设定值
uchar KC[15]; //调试菜单-开关量输出

//故障报文
uchar fault_sum; //故障总数
uchar fault_number; //当前故障号码

uchar direction_value; //方向值 1=正向 2=反向 3=停

uchar uart_recieve_time; //接收次数限制
uchar tx_count; ////发送字节数

改变后的

//配置菜单-额定值
uint rated_value[3]; //额定频率 , 额定电压, 额定功率
uint running_value[13]; //设置菜单-运行设定值
uint protect_value[13]; //设置菜单-保护设定值]

uint count_key;
uint tmr1_count;
uint L_run_count; //控制运行灯LED1
uint error_time; //接收错误次数
uint correct_time; //接收正确次数

uchar menu_buffer[38][16];
uchar menu_display[4][16];
uchar rc_buff[48]; //接收缓存
uchar tx_buff[48]; //发送缓存
//uchar KR[20];
//uchar PS[38];
//密码1,由程序固化,用户不可修改 “上,下,左,右,左,右,确定,退出”
uchar password0[8]={8,4,2,10,2,10,32,1};
uchar password1[8]; //密码2,address:0x08----0x15
uchar password2[8]; //密码3,address:0x16----0x23




uchar rc_time; //接收时间
uchar key_zhi, keyb, keyb1;

//配置菜单-单元设置
uchar address_value; //单元地址,
uchar year_value; //年,
uchar month_value; //月,
uchar day_value; //日,
uchar week_day; //日,
uchar hour_value; //小时,
uchar minute_value; //分,
uchar second_value; //秒


uchar PSV[30]; //设置菜单-保护板设定值-保护设定值
uchar FSV[30];//设置菜单-保护板设定值-故障设定值
uchar JSV[30]; //设置菜单--保护板设定值-速停故障设定值
uchar KC[15]; //调试菜单-开关量输出

//故障报文
uchar fault_sum; //故障总数
uchar fault_number; //当前故障号码

uchar direction_value; //方向值 1=正向 2=反向 3=停

uchar uart_recieve_time; //接收次数限制
uchar tx_count; ////发送字节数


發表於: 2008/4/16 11:32
頂部


Re: 16F616 內部震盪問題一問
#5
新會員
新會員


list p=16f616 ; list directive to define processor
#include <P16F616.inc> ; processor specific variable definitions

__CONFIG _INTRC_OSC_CLKOUT
; Internal RC calibration value is placed at location 0x3FF by Microchip
; as a movlw k, where the k is a literal value.


ORG 0x000 ; coding begins here
goto main
main
MOVLW 0X0f
movwf OSCTUNE ; update register with factory cal value
nop

GOTO $

end
这样就OK了

發表於: 2008/4/15 16:54
頂部


Re: 串口通信没反映
#6
新會員
新會員


向电脑发数据,居然都收不到.

發表於: 2008/4/15 13:55
頂部


串口通信没反映
#7
新會員
新會員


帮忙看下单片机串口给计算机发送数据的程序硬件连接是正确的 怎么就是没有反映呢,谢谢各位大大.硬件都连接正确.
;*****************************************************************************

 list 
p=16F688      ; list directive to define processor
 
#include p16F688.inc    ; processor specific variable definitions
 
 
errorlevel  -302              suppress message 302 from list file

 __CONFIG _FCMEN_OFF
&_IESO_OFF&_BOD_OFF&_CPD_OFF&_CP_OFF&_PWRTE_OFF&_WDT_OFF&_INTRC_OSC_CLKOUT&_MCLRE_ON

#define bank0 bcf STATUS,RP0
#define bank1 bsf STATUS,RP0
;***** VARIABLE DEFINITIONS*****************************************
w_temp   equ 0x70 variable used for context saving 
status_temp  equ 0x71  
variable used for context saving
isr_temp   equ 0x72 
used to determine the interrupt source

TxData   equ 0x7A


STATE    equ 0x7D 
State machine
flg    equ 0x7F 
various flags
circle          equ 0x80
even    EQU 0  
;data from UART was returned in W


;*************************************************************************
;               
Pin Declarations
TX      equ     04h             
;TX pin
RX      equ     05h             
;RX pin
;*************************************************************************
;  
Constant Declarations

 ORG     0x000       
processor reset vector
 clrf STATUS
 
goto  main         go to beginning of program

 ORG     0x004        
interrupt vector location
 movwf   w_temp       
save off current W register contents
 movf STATUS
,w       move status register into W register
 movwf status_temp    
save off contents of STATUS regist
 
goto  isr
  main
   call Init
    call  USART_INIT
    CLRF  TXREG 
    movlw .9
    movwf circle
nextchar 
    call  tx_char
    decfsz circle
,w
    
goto nextchar
    
goto $
Init
 bank1
 clrf flg
;
 
clrf  STATE    ;initialize state machine
    bsf    OSCCON
,SCS

 movlw 
b'01100000'
 
iorwf OSCCON   ;Set INTOSC to 4MHz

 clrf  ANSEL            
;&#23558;引&#33050;配置&#20026;I/O口


 
movlw 0xFF 
 movwf TRISA             
;把PORTA配置&#20026;&#36755;入

 
bsf TRISC,RX     ;RX引&#33050;配置&#20026;&#36755;入   
 
bcf TRISC,TX  ;TX引&#33050;配置&#20026;&#36755;出 
movlw 0x20B'00100000'
 
;movwf PIE1    ;Int on Rx (RCIE)      
 
bank0
 clrf PORTA
 clrf PORTC

 
;movlw 0xC0  ;B'11000000'   ;GIE,PEIE
 
;movwf INTCON;全局中&#26029;,外&#35774;中&#26029;允&#35768;
    
RETURN
isr
 nop
 nop
 
return
USART_INIT
 bank0
 movlw  .51    
; Default 1.2Kbaud 4MHz  可以查表得到,注意&#21442;&#25968;的0或1   P98
 
movwf  SPBRG

 bcf  TXSTA
,BRGH   Low
 bcf  TXSTA
,SYNC  Async mode
 bcf  TXSTA
,TX9  9 bit data for parity
 bsf  TXSTA
,TXEN  enable transmitter 

 bsf  RCSTA
,SPEN  Serial Port Enable  
 
;bsf  RCSTA,CREN  Continuous Receive Enable
 
;bcf  RCSTA,RX9  9 bit data for parity

 bcf  BAUDCTL
,BRG16 16 bit BRG

 movf  RCREG
,w   read RCREG to clear any pending IRQ=Interrupt Request 
 
return
 ;------------------ 
Transmit Character ------------------------
tx_char
transmit the character in W ParityByte CalcParity

 bank0      

tx_lp
 btfss  PIR1
,TXIF  TX Buffer Empty?
 goto  
tx_lp    Check again...

 
movwf  TXREG
 
 banksel TXSTA
 btfss  TXSTA
,TRMT  ;wait for data TX
 
goto  $-1
    
return



發表於: 2008/4/15 9:58
頂部


Re: 能否用PIC24FJ16GA002实现3路PWM输出3个不同频率
#8
新會員
新會員


怎么实现两路啊?各位大大给我提供思路啊?或者有没有例程?

發表於: 2008/4/8 14:01
頂部


能否用PIC24FJ16GA002实现3路PWM输出3个不同频率
#9
新會員
新會員



初用PIC,看到该芯片具有5路标准PWM输出,于是想用该芯片实现3路独立的PWM输出3个频率信号,这三路PWM输出占空比均为50%,输出的频率各不相同,不知道能否实现?? 怎么实现?请各位大大多指教.

發表於: 2008/3/27 16:34
頂部






:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------