|
隆重推荐 Flowcode V3 图形化编程语言(For PIC/AVR/ARM)
今天向大家隆重推荐一款专为单片机量身定制的图形化程序语言—— Flowcode V3,他目前包括支持以下三种微控制器:PIC AVR 和 ARM,支持中文菜单!(繁体)
Flowcode 3 is one of the world's most advanced graphical programming languages for microcontrollers. The great advantage of Flowcode is that it allows those with little experience to create complex electronic and robotic systems. Flowcode is a powerful language that uses macros to facilitate the control of complex devices like 7-segment displays, motor controllers, and LCD displays. The use of macros allows students to control highly complex electronic devices without getting bogged down in understanding the programming involved. Flowcode is used in education as a means of introducing students to the concepts of programming. Flowcode is used in industry for rapid development and as a means of managing large projects. New features in version 3 include 16 bit arithmetic, strings and string manipulation, improved graphical user interface and printing, support for 18 series devices, Pulse Width Modulation, I2C, new ADC component and many more.
软件简介:(PDF格式)
http://www.matrixmultimedia.com/datasheets/TEFLC-60-3.pdf
FlowcodeV3下载地址:
官方网站:
http://www.matrixmultimedia.com/
VIEW Flowcode V3 for ARM
未找到 :(
VIEW Flowcode V3 for AVR
http://www.matrixmultimedia.com/ ... tm/Flowcode_AVR.exe
未找到破解 :( 有找到的请传一份给我,我发上来。
VIEW Flowcode V3 for PIC
http://www.matrixmultimedia.com/software/FlowcodeV3%20demo.zip
破解小组:SONSIVRI CRACKING GROUP
http://www.sonsivri.com/forum/index.php
Flowcode V3 for PIC破解下载地址:
http://w15.easy-share.com/14129041.html
(这个是免费下载,找了好久啊。其它的都要收费,汗!下载不了的找我,QQ:357641612)
说说它的优点:
1、直接画流程图仿真,仿真成功后可以编译成 C 和 汇编 代码,并生成 HEX 文件,并直接烧写到芯片里。真正的一键搞定!
2、几乎不用考虑初始化:你要输出它就自动把端口设置为输出,你要输入,它就自动把端口设置为输入。
3、芯片移植非常 Easy !直接更换芯片就可以了。流程图几乎不用动!
4、可以导入、导出流程图,这样同一个流程图居然可以在不同的微控制器上运行!(PIC<--->AVR)
5、强大的仿真模块,见下图。
6、官方有每款仿真模块的电路板,采用搭积木的方式搭建电路!
具有多种外设仿真模块:
设计实例
我刚用它成功编写了一个基于 PIC16F690 的简单的流水灯程序,如下:
效果图:
编程界面:
C代码:
//************************************************************************************
//**
//** File name: D:\My Documents\TestFC\690.c
//** Generated by: Flowcode v3.2.2.40
//** Date: Wednesday, June 11, 2008 16:59:12
//** Licence:
//** Registered to: DEFAULT
//**
//**
//** NOT FOR COMMERCIAL USE
//**
//** Cracked By Ahmad_k@Sonsivri.com
//************************************************************************************
#define MX_PIC
//Defines for microcontroller
#define P16F690
#define MX_EE
#define MX_EE_SIZE 256
#define MX_SPI
#define MX_SPI_BCB
#define MX_SPI_SDI 4
#define MX_SPI_SDO 7
#define MX_SPI_SCK 6
#define MX_UART
#define MX_UART_B
#define MX_UART_TX 7
#define MX_UART_RX 5
#define MX_I2C
#define MX_MI2C
#define MX_I2C_B
#define MX_I2C_SDA 4
#define MX_I2C_SCL 6
#define MX_PWM
#define MX_PWM_CNT 1
#define MX_PWM_TRIS1 trisc
#define MX_PWM_1 5
//Functions
#include <system.h>
#pragma CLOCK_FREQ 19660800
//Configuration data
//Internal functions
#include "C:\Program Files\Matrix Multimedia\Flowcode V3\FCD\internals.h"
//Macro function declarations
//Variable declarations
char FCV_LED;
char FCV_DIRECTION;
//Supplementary defines
//Macro implementations
//Supplementary implementations
void main()
{
//Initialisation
ansel = 0;
anselh = 0;
//Interrupt initialisation code
option_reg = 0xC0;
//Start
//Connection Point: A
FCC_Main_A:
//Output
//Output: LED -> PORT C
trisc = 0x00;
portc = FCV_LED;
//Delay
//Delay: 100 ms
delay_ms(100);
//Decision
//Decision: Direction = 0?
if( FCV_DIRECTION == 0 )
{
//Calculation
//Calculation:
// LED = LED * 2
FCV_LED = FCV_LED * 2 ;
} else {
//Calculation
//Calculation:
// LED = LED / 2
FCV_LED = FCV_LED / 2 ;
}
//Decision
//Decision: LED = 0?
if( FCV_LED == 0 )
{
//Decision
//Decision: Direction = 1?
if( FCV_DIRECTION == 1 )
{
//Calculation
//Calculation:
// LED = 1
// Direction = 0
FCV_LED = 1 ;
FCV_DIRECTION = 0 ;
} else {
//Calculation
//Calculation:
// LED = 128
// Direction = 1
FCV_LED = 128 ;
FCV_DIRECTION = 1 ;
}
}
//Goto Connection Point
//Goto Connection Point: A
goto FCC_Main_A;
mainendloop: goto mainendloop;
}
void interrupt(void)
{
}
汇编代码:
;/////////////////////////////////////////////////////////////////////////////////
;// Code Generator: BoostC Compiler - http://www.sourceboost.com
;// Version : 6.70
;// License Type : Pro License
;// Limitations : PIC12,PIC16 max code size:Unlimited, max RAM banks:Unlimited
;/////////////////////////////////////////////////////////////////////////////////
include "P16F690.inc"
; Heap block 0, size:95 (0x000000A0 - 0x000000FE)
__HEAP_BLOCK0_BANK EQU 0x00000001
__HEAP_BLOCK0_START_OFFSET EQU 0x00000020
__HEAP_BLOCK0_END_OFFSET EQU 0x0000007E
; Heap block 1, size:80 (0x00000120 - 0x0000016F)
__HEAP_BLOCK1_BANK EQU 0x00000002
__HEAP_BLOCK1_START_OFFSET EQU 0x00000020
__HEAP_BLOCK1_END_OFFSET EQU 0x0000006F
; Heap block 2, size:74 (0x00000026 - 0x0000006F)
__HEAP_BLOCK2_BANK EQU 0x00000000
__HEAP_BLOCK2_START_OFFSET EQU 0x00000026
__HEAP_BLOCK2_END_OFFSET EQU 0x0000006F
; Heap block 3, size:0 (0x00000000 - 0x00000000)
__HEAP_BLOCK3_BANK EQU 0x00000000
__HEAP_BLOCK3_START_OFFSET EQU 0x00000000
__HEAP_BLOCK3_END_OFFSET EQU 0x00000000
gbl_status EQU 0x00000003 ; bytes:1
gbl_indf EQU 0x00000000 ; bytes:1
gbl_tmr0 EQU 0x00000001 ; bytes:1
gbl_pcl EQU 0x00000002 ; bytes:1
gbl_fsr EQU 0x00000004 ; bytes:1
gbl_porta EQU 0x00000005 ; bytes:1
gbl_portb EQU 0x00000006 ; bytes:1
gbl_portc EQU 0x00000007 ; bytes:1
gbl_pclath EQU 0x0000000A ; bytes:1
gbl_intcon EQU 0x0000000B ; bytes:1
gbl_pir1 EQU 0x0000000C ; bytes:1
gbl_pir2 EQU 0x0000000D ; bytes:1
gbl_tmr1l EQU 0x0000000E ; bytes:1
gbl_tmr1h EQU 0x0000000F ; bytes:1
gbl_t1con EQU 0x00000010 ; bytes:1
gbl_tmr2 EQU 0x00000011 ; bytes:1
gbl_t2con EQU 0x00000012 ; bytes:1
gbl_sspbuf EQU 0x00000013 ; bytes:1
gbl_sspcon EQU 0x00000014 ; bytes:1
gbl_ccpr1l EQU 0x00000015 ; bytes:1
gbl_ccpr1h EQU 0x00000016 ; bytes:1
gbl_ccp1con EQU 0x00000017 ; bytes:1
gbl_rcsta EQU 0x00000018 ; bytes:1
gbl_txreg EQU 0x00000019 ; bytes:1
gbl_rcreg EQU 0x0000001A ; bytes:1
gbl_pwm1con EQU 0x0000001C ; bytes:1
gbl_eccpas EQU 0x0000001D ; bytes:1
gbl_adresh EQU 0x0000001E ; bytes:1
gbl_adcon0 EQU 0x0000001F ; bytes:1
gbl_option_reg EQU 0x00000081 ; bytes:1
gbl_trisa EQU 0x00000085 ; bytes:1
gbl_trisb EQU 0x00000086 ; bytes:1
gbl_trisc EQU 0x00000087 ; bytes:1
gbl_pie1 EQU 0x0000008C ; bytes:1
gbl_pie2 EQU 0x0000008D ; bytes:1
gbl_pcon EQU 0x0000008E ; bytes:1
gbl_osccon EQU 0x0000008F ; bytes:1
gbl_osctune EQU 0x00000090 ; bytes:1
gbl_pr2 EQU 0x00000092 ; bytes:1
gbl_sspadd EQU 0x00000093 ; bytes:1
gbl_sspstat EQU 0x00000094 ; bytes:1
gbl_wpu EQU 0x00000095 ; bytes:1
gbl_ioc EQU 0x00000096 ; bytes:1
gbl_wdtcon EQU 0x00000097 ; bytes:1
gbl_txsta EQU 0x00000098 ; bytes:1
gbl_spbrg EQU 0x00000099 ; bytes:1
gbl_spbrgh EQU 0x0000009A ; bytes:1
gbl_baudctl EQU 0x0000009B ; bytes:1
gbl_adresl EQU 0x0000009E ; bytes:1
gbl_adcon1 EQU 0x0000009F ; bytes:1
gbl_eedata EQU 0x0000010C ; bytes:1
gbl_eeadr EQU 0x0000010D ; bytes:1
gbl_eedath EQU 0x0000010E ; bytes:1
gbl_eeadrh EQU 0x0000010F ; bytes:1
gbl_wpub EQU 0x00000115 ; bytes:1
gbl_iocb EQU 0x00000116 ; bytes:1
gbl_vrcon EQU 0x00000118 ; bytes:1
gbl_cm1con0 EQU 0x00000119 ; bytes:1
gbl_cm2con0 EQU 0x0000011A ; bytes:1
gbl_cm2con1 EQU 0x0000011B ; bytes:1
gbl_ansel EQU 0x0000011E ; bytes:1
gbl_anselh EQU 0x0000011F ; bytes:1
gbl_eecon1 EQU 0x0000018C ; bytes:1
gbl_eecon2 EQU 0x0000018D ; bytes:1
gbl_pstrcon EQU 0x0000019D ; bytes:1
gbl_srcon EQU 0x0000019E ; bytes:1
gbl_FCV_LED EQU 0x00000023 ; bytes:1
gbl_FCV_DIRECTION EQU 0x00000024 ; bytes:1
CompTempVar621 EQU 0x00000025 ; bytes:1
CompTempVar622 EQU 0x00000025 ; bytes:1
delay_ms_00000_arg_del EQU 0x00000025 ; bytes:1
Int1Context EQU 0x0000007F ; bytes:1
Int1BContext EQU 0x00000020 ; bytes:3
ORG 0x00000000
GOTO _startup
ORG 0x00000004
MOVWF Int1Context
SWAPF STATUS, W
BCF STATUS, RP0
BCF STATUS, RP1
MOVWF Int1BContext
SWAPF PCLATH, W
MOVWF Int1BContext+D'1'
SWAPF FSR, W
MOVWF Int1BContext+D'2'
BCF PCLATH,3
BCF PCLATH,4
GOTO interrupt
ORG 0x00000010
delay_ms_00000
; { delay_ms ; function begin
MOVF delay_ms_00000_arg_del, F
BTFSS STATUS,Z
GOTO label4026531858
RETURN
label4026531858
MOVLW 0xF5
label4026531859
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
ADDLW 0xFF
BTFSS STATUS,Z
GOTO label4026531859
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ delay_ms_00000_arg_del, F
GOTO label4026531858
RETURN
; } delay_ms function end
ORG 0x00000038
main
; { main ; function begin
BCF STATUS, RP0
BSF STATUS, RP1
CLRF gbl_ansel
CLRF gbl_anselh
MOVLW 0xC0
BSF STATUS, RP0
BCF STATUS, RP1
MOVWF gbl_option_reg
label268439647
BSF STATUS, RP0
CLRF gbl_trisc
BCF STATUS, RP0
MOVF gbl_FCV_LED, W
MOVWF gbl_portc
MOVLW 0x64
MOVWF delay_ms_00000_arg_del
CALL delay_ms_00000
MOVF gbl_FCV_DIRECTION, F
BTFSS STATUS,Z
GOTO label268439654
MOVF gbl_FCV_LED, W
MOVWF CompTempVar621
BCF STATUS,C
RLF CompTempVar621, W
MOVWF gbl_FCV_LED
GOTO label268439659
label268439654
MOVF gbl_FCV_LED, W
MOVWF CompTempVar622
BCF STATUS,C
RRF CompTempVar622, W
MOVWF gbl_FCV_LED
label268439659
MOVF gbl_FCV_LED, F
BTFSS STATUS,Z
GOTO label268439647
DECF gbl_FCV_DIRECTION, W
BTFSS STATUS,Z
GOTO label268439666
MOVLW 0x01
MOVWF gbl_FCV_LED
CLRF gbl_FCV_DIRECTION
GOTO label268439647
label268439666
MOVLW 0x80
MOVWF gbl_FCV_LED
MOVLW 0x01
MOVWF gbl_FCV_DIRECTION
GOTO label268439647
; } main function end
ORG 0x00000065
_startup
BCF PCLATH,3
BCF PCLATH,4
GOTO main
ORG 0x00000068
interrupt
; { interrupt ; function begin
BCF STATUS, RP0
BCF STATUS, RP1
SWAPF Int1BContext+D'2', W
MOVWF FSR
SWAPF Int1BContext+D'1', W
MOVWF PCLATH
SWAPF Int1BContext, W
MOVWF STATUS
SWAPF Int1Context, F
SWAPF Int1Context, W
RETFIE
; } interrupt function end
END
好了,说了这么多优点,我还想说说它的缺点:
1、不支持位变量,所有的位操作都是用 unsigned char 型变量来实现的,有点像 AVR 。(对端口位操作没有使用 PIC 的 BSF BCF 指令太遗憾了!)。
2、数据从端口读取入变量,再用变量运算,结果再输出到端口,有点罗嗦。(我喜欢直接对端口进行运算,比如 PROTC<<1 这样生成的代码比较简洁)
3、变量只有三种类型:unsigned char、int、string,不好用!
不过幸好它还支持嵌入 C 和 汇编 代码!这样可以用嵌入的代码来弥补上述缺陷,我想应该是这样。
我也是刚学一两天,如有说的不对的还请多多指教。发这个帖子只是觉得好东东要大家一起分享,共同学习。
这个软件在国外已经比较流行了,但在国内似乎还没有多少人用!!!我在网上没有找到有类似的文章及讨论。
一个人学遇到困难不好解决,所以发到这里,有兴趣的朋友一起学习和交流吧!
谢谢观看!
天之蛟龙.Delong
2008年6月12日
Delong_z@163.com |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|