佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1116|回复: 14

帮帮忙看下

[复制链接]
发表于 2-6-2006 04:14 PM | 显示全部楼层 |阅读模式
请问下面这source code 是用那一种program的?
是ccs还是mplab or c++
小弟还是新手,不好意思噢!!!

#include <18f452.h>                        // device selection  
#device adc=10  *=16
#include <STDLIB.H>                        // needed for division routine

#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT,NOOSCSEN,CCP2C1,NOSTVREN,NODEBUG  

#use delay(clock=4000000)         // 4 MhZ  ! ADC is not optimal at 20 MhZ + power consumption doubles

#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7)
#use i2c(master, sda=PIN_C4, scl=PIN_C3, slow)

#zero_ram

// #PRIORITY  

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)

#define NOP #asm nop #endasm

#byte pa        =0xF80        //port a        // analog
#byte pb        =0xF81        //b                        // spi & sensor controls
#byte pc        =0xF82        //c                        // i淆 & timing
#byte pd        =0xF83        //d                        // LCD
#byte pe        =0xF84        //port e        // keys

// *********************************
// PORT A
// analog inputs

// A1= barometer input from mpx4115a
// A2= -Vref 2.400 V
// A3= +Vref 4.700 V


// *********************************
// PORT B: sensor controls + menu key

// emulated SPI bits
#bit TC77_CS                =pb.7                // RB7 pin40,        TC77 !CS
#bit TC77_SIO                =pb.6                // RB6 pin39,        TC77 S I/O
#bit TC77_SCK                =pb.5                // RB5 pin38,        TC77 SCK

#bit key_enter                 =pb.0                // RB0, pin33
#bit key_plus                 =pb.1                // RB1, pin34
#bit key_min                 =pb.2                // RB2, pin35
       
#bit MPX4115A_POWER =pb.3                // RB3 pin36,         "1" = MPX4115A OFF (switches the module completely on or off)
#bit RH_POWER                =pb.4                // RB4 pin37       

// *********************************
// PORT C
// i淆 & timer inputs


// T1 external input (hardware)        // RC0 pin15
// this is 1 Hz input from RTC DS1307 (for wake-up from sleep) AND input RH (H1 sensor)
#bit CP1                =pc.2                        // RC2 pin17 **** RX RADIO


// RC3 pin18 = SCL i淆                         // already defined (hardware)
// RC4 pin23 = SDA i淆

// RC6 pin25 = RS232 TX                        // already defined (hardware)
// RC7 pin26 = RS232 RX

// *********************************
// PORT D
// LCD bits + lobat detect

#bit lobat                 =pd.1        // RD1

#bit nok_sclk         =pd.5        // RD5       
#bit nok_sda         =pd.4        // RD4
#bit nok_dc         =pc.5        // RC5
#bit nok_cs         =pd.3        // RD3
#bit nok_res         =pd.2        // RD2

// *********************************
// PORT E
// 1 sensor control

#bit RX433_POWER        =pe.2                // RE2 pin10

// *********************************

//
#SEPARATE void key_sel(void);                                        // for key inputs
char k_min,k_plus,k_enter;
//

//
void sleep_routine(void);                                                // for sleep mode
static short sleep_mode;
static char tosleep_counter;

#define sleeping_period 45                                                // approx. time of sleep in seconds        (normally around 45) *************************************
//

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#INT_EXT                                                                                 // waking up from BO / INT0
void ext_isr(void)                               
{
static short button_pressed=FALSE;       

if(button_pressed){sleep_mode=FALSE;tosleep_counter=0;k_enter=1;}
else{sleep_mode=TRUE;}


if(input(PIN_B0)){button_pressed=TRUE;}                               
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#INT_EXT1                                                                                 // waking up from B1 / INT1
void ext1_isr(void)                               
{
static short button_pressed=FALSE;       

if(button_pressed){sleep_mode=FALSE;tosleep_counter=0;k_plus=1;}
else{sleep_mode=TRUE;}

if(input(PIN_B1)){button_pressed=TRUE;}                               
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#INT_EXT2                                                                                 // waking up from B2 / INT2
void ext2_isr(void)                               
{
static short button_pressed=FALSE;       

if(button_pressed){sleep_mode=FALSE;tosleep_counter=0;k_min=1;}
else{sleep_mode=TRUE;}

if(input(PIN_B2)){button_pressed=TRUE;}                               
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#INT_TIMER1                                                                         // waking up from T1 overflow
void timer1_isr(void)
{

if(tosleep_counter==0){sleep_mode=FALSE;}
else {sleep_mode=TRUE;}


}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void update_interval(void);
//
int16 h;
char hist_sel;
int16 hist_index,curr_index;                        // for graphical stuff
signed int16 diff_hi_lo,tt_in_hi,tt_in_lo,t_value,tt_value;
void show_histories(void);


//
char char_row,charsel,charpos,chardata;                 // for nokia_3310 lcd
int16 ddram;
char plot_value;
int32 plot_value32;
int32 plot_umsb,plot_lmsb,plot_ulsb,plot_llsb;
#include <lph7779_v3.c>

//                                                                                                       
void tc77_read(void);                                        // fot SPI temperature sensor TC77
signed int16 t_in,t_unused;
float tc_in_float;
float tf_in_float;
char tc77_ready;
void tc77_write(short bitfortc77);               

float t_in_hi,t_in_lo,t_in_temp;
void store_t_in(void);
void show_t_in_graph(void);
//

//
void mpx4115a_read();                                // for pressure sensor MPX4115A
int16 p_an;
int16 adc_sample;
float p_hPa_float;
float p_inHg_float;                                               
char p_corr;
float press_hi,press_lo,press_temp;
void store_press(void);
void show_press_graph(void);
//

//
void rhum_read(void);                                        // for relative humidity (RH)
void rhum_convert(void);
int16 rh_count,rh_count2;
char rh_corr;
char rh_procent;
char rh_hi,rh_lo,rh_temp;
void store_rh(void);
void show_rh_graph(void);
//

//                                                                                // for ds1307
byte rtc_data;                                                       
char rtensec,rsec,rtenmin,rmin,rtenhour,rhour,rday,rtendate,rdate,rmonth,rtenyear,ryear;
#include <ds1307_mb_v1.c>                               
//

//
#include <24256_mb.c>                                        // for ext eeprom
EEPROM_ADDRESS address;
//

//
signed char displ_mod;                                        // for user menu
signed char temp_outp;
signed char press_outp;
#include <menu_012.c>
//

//
char rx_status;                                                        // for RX Radio routines
int16 rx_valid_in_loop;
char bitcount;
short bit_RC5,bit_prev;               
char sample_RC5;               
int32 rx_temp_int32;
int16 rise,fall;
short rxnewsequence;
float tc_ex_float;
float tf_ex_float;
short rx_lobat;
short rx_minus;
char tc_ex_0,tc_ex_1,tc_ex_2;
#include <rx_radio_012.c>
float t_ex_hi,t_ex_lo,t_ex_temp;
void store_t_ex(void);
void show_t_ex_graph(void);

//


WRITE_FLOAT_EXT_EEPROM(long int n, float data)
{
                int i;

                for (i = 0; i < 4; i++)
                        write_ext_eeprom(i + n, *(&data + i) ) ;
}


float READ_FLOAT_EXT_EEPROM(long int n)
{
                int i;
                float data;

                for (i = 0; i < 4; i++)
                        *(&data + i) = read_ext_eeprom(i + n);

                return(data);
}

void main(){


SET_TRIS_A(0x0f);                // oooo iiii
SET_TRIS_B(0x47);                // oioo oiii       
SET_TRIS_C(0x9f);                // iooi iiii
SET_TRIS_D(0x02);                // oooo ooio
SET_TRIS_E(0x00);                // oooo oooo       

sleep_mode=FALSE;                                  // init sleep flag
tosleep_counter=0;

printf("Weather Station\n\r");                // RS232 test

ds1307_write(7,0x80);                                // disable SQWE out on DS1307
TC77_CS=1;                         // deselect the TC77 (RB7)

MPX4115A_POWER=1;         // power-off for the mpx4115a (RB4)
RH_POWER=1;                 // power-off for the H1-circuit (RA4)
RX433_POWER=1;                 // power-off for the RX433 (RA5)

nokia_init();                // lph7779 init


rtc_data=ds1307_read(2);                                                                                        // init RTC        -- ds1307_write(byte rtcreg, byte rtc_data)
ds1307_write(2,(rtc_data&0x3f));                                                                        // set 24h mode -- reg 2, bit 6= 0

rtc_data=ds1307_read(0);                                                                                        // init RTC        -- ds1307_write(byte rtcreg, byte rtc_data)
if ((rtc_data&0x80)==0x80){ds1307_write(0,(rtc_data&0x7f));}                // enable DS1307 oscillator -- reg 0, bit 7= 0  -- CH= 0       

temp_outp=read_ext_eeprom(0x0003);                // load user presets
press_outp=read_ext_eeprom(0x0004);
p_corr=read_ext_eeprom(0x0005);
rh_corr=read_ext_eeprom(0x0006);

rx_valid_in_loop=250;


t_ex_hi=-200.0499;
t_ex_lo=200.0499;


// **********************************

while(1)
{
menu();
show_rtc();

update_interval();

[ 本帖最后由 w0t3rf15h 于 2-6-2006 04:18 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 2-6-2006 05:49 PM | 显示全部楼层
C??                  .
回复

使用道具 举报

发表于 3-6-2006 11:18 AM | 显示全部楼层
是CCS C Compiler,如果你真的是初学者, 那么那个code对你来说是太难了。
回复

使用道具 举报

 楼主| 发表于 4-6-2006 11:11 PM | 显示全部楼层
我是新手,那些code 真的真的很难了解。
我想问如果用TTS的话,会不会更简单一点??
(tts 是社么东东??没学过,但听人家说好像比较好)

还有,ccs compiler 和 DSP 有社么关系??

[ 本帖最后由 w0t3rf15h 于 4-6-2006 11:14 PM 编辑 ]
回复

使用道具 举报

发表于 7-6-2006 02:37 PM | 显示全部楼层
原帖由 w0t3rf15h 于 4-6-2006 11:11 PM 发表
我是新手,那些code 真的真的很难了解。
我想问如果用TTS的话,会不会更简单一点??
(tts 是社么东东??没学过,但听人家说好像比较好)

还有,ccs compiler 和 DSP 有社么关系??

对不起,没听说过什么是TTS。

ccs compiler 是编译器。
DSP -Digital Signal Processor
两者之间没有关系。

你还在求学,是学生吗?
回复

使用道具 举报

 楼主| 发表于 8-6-2006 11:25 AM | 显示全部楼层
原帖由 pic 于 7-6-2006 02:37 PM 发表

对不起,没听说过什么是TTS。

ccs compiler 是编译器。
DSP -Digital Signal Processor
两者之间没有关系。

你还在求学,是学生吗?


是的,小弟还在读书。
我还想问不同的IC就要用不同的software来写吗?
然后他的programmer又是用不同的???
我对PICMicrocontroller一点都不了解,请多多原谅!!
回复

使用道具 举报

Follow Us
发表于 8-6-2006 02:23 PM | 显示全部楼层
不同的mcu developer用不同的technology,所以不同的asm instruction set咯~~
同一个developer也可能有不同的series,不同的core~~所以又有不同的instruction set....

比如说microchip出了PIC16F, 18F,...
PIC16F都用同一种asm,PIC18F只有少许不通~
不过只要去dl你所用的IC的datasheet来看~~你就懂的啦~~datasheet很重要,看了才决定那个mcu适合应用~~
回复

使用道具 举报

发表于 13-6-2006 12:32 AM | 显示全部楼层
原帖由 w0t3rf15h 于 8-6-2006 11:25 AM 发表


是的,小弟还在读书。
我还想问不同的IC就要用不同的software来写吗?
然后他的programmer又是用不同的???
我对PICMicrocontroller一点都不了解,请多多原谅!!


醬,你了什麽而問這個source code 呢?
回复

使用道具 举报


ADVERTISEMENT

发表于 21-6-2006 10:24 PM | 显示全部楼层
原帖由 pic 于 3-6-2006 11:18 AM 发表
是CCS C Compiler,如果你真的是初学者, 那么那个code对你来说是太难了。


如果是PIC初学者,哪一个language比较容易学?
回复

使用道具 举报

发表于 22-6-2006 08:39 AM | 显示全部楼层
我认为是PIC BASIC
回复

使用道具 举报

发表于 22-6-2006 09:47 AM | 显示全部楼层
原帖由 cwtan21 于 21-6-2006 10:24 PM 发表
如果是PIC初学者,哪一个language比较容易学?

我开始学时,是想用PICBasic, 因为我只会Basic, 不会C language。
但用了PICbasic,发现它太容易了,几乎什么都可以,对一般简单的task而言。
要做更深入时,发现PICbasic有点慢了,也不容易,因为只能用它有的command, 没有的话就不可以了,不会了。
后来, 我去买了CCS C PCM compiler (~RM600),过后就用CCS C,虽然还有更好的 Compiler 如 Hi-tech C,但CCS 是最便宜。

你可以这样比较:
PICBasic = Auto Gear 汽车
CCS C = Manual/Auto Gear 汽车
ASM= 更高级,你要自己控制engine要进多少汽油,空气,何时点火。。。

你喜欢Auto 自动牙,还是手牙的汽车?手牙的汽车,能让你发挥汽车最大的性能, 对吗?但自动牙的很容易驾驶,不会死火。。。

如果你打算深入,就认真学C+ASM language, 玩玩的,要快的就用PICBasic 吧。
回复

使用道具 举报

发表于 22-6-2006 06:57 PM | 显示全部楼层
如果会 c language,那个比较容易入手?
回复

使用道具 举报

发表于 23-6-2006 08:36 AM | 显示全部楼层
原帖由 sushi-x 于 22-6-2006 06:57 PM 发表
如果会 c language,那个比较容易入手?

当然是C language。
回复

使用道具 举报

发表于 23-6-2006 06:21 PM | 显示全部楼层
原帖由 pic 于 23-6-2006 08:36 AM 发表

当然是C language。

是不是 programming的 C language?

<printf> ?
回复

使用道具 举报

发表于 24-6-2006 12:07 AM | 显示全部楼层
跟 programming 的 C 是有差别的,但 structure 是一样。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2024 08:48 AM , Processed in 0.115130 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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