clkyui 发表于 2012-4-8 12:55:07

8051外设全自动配置 (有源码的哟)

本帖最后由 clkyui 于 2012-4-8 15:50 编辑

虽然8051及delphi已是昨日黄花,不过Delphi真的很优秀,8051用的人还很多。
在"ouravr"混了几年,莫元还是个位数,呵呵,有点不好意思。现在发个帖: 用Delphi写的8051外设 自动配置程序
是大家最喜欢的(带源码),大家可以根据自己的习惯,做出最得心应手的工具,
使用很简单: 在目标文件夹(例如: d:\work\)复制文件INC52.exe和INTERRUP.INC
解析下 INTERRUP.INC
#define Project_Nameline       //专案名称(line) 如果是abc123 就改为#define Project_Name abc123
#define CPU         8032      
//CPU类型 一般是8032系列(有256字节内存,有T2) ,如果是8031类型(例如at89c51)就改为#define CPU   8031
#define Crystal       12//晶振频率: 12Mhz
#define MachineCycle12//机器周期 12T 如果STC11F 改为 #define MachineCycle 1

#define Uses_T0       1   //使用定时器T0 为1 ,不使用: #define Uses_T0   0
#define Timer0      50//定时器T0定时时间 50 us(微秒)
#define Timer0_Manual 0   //定时器T0手动装载定时值(TL0,TH0)
#define T0_Priority   0   ////定时器T0中断优先

...以下的就不用我啰嗦了

如果 CPU类型是8032使用了Uart(#define Uses_Uart 1) 没有使用T2(#define Uses_T2 0),程序优先使用T2作为Uart的波特率发生器
否则使用T1,如果T1,T2,Uart都使用的话,那不用我废话了,只能错误侍候

后话: 这个程序已经是8年前的概念了,而且我只实现了8031,8032,还有其他的CPU大家可以一一实现,有赖Delphi完美的
物件导向支持,实现过程不用从头做起,哎发帖不容易, 有2个愿望(是不是有点贪心?) 1有个裤子,
2要是大家实现了其他CPU,请他也发上来

clkyui 发表于 2012-4-8 12:56:49

本帖最后由 clkyui 于 2012-4-8 15:55 编辑

源码来了

115网盘:
http://115.com/file/dpwwnt02

rclong 发表于 2012-4-8 13:00:21

最近正好在回顾 谢谢楼主程序

clkyui 发表于 2012-4-8 13:04:55

哎哟,原来我还没说完
使用很简单:
1)在目标文件夹(例如: d:\work\)复制文件INC52.exe和INTERRUP.INC
2)运行INC52.exe
3)INC52.exe 会建立几个相关的文件, 如果要建立的文件已经存在,会提示是否复写
4)修改好相应的文件,然后运行c.bat

clkyui 发表于 2012-4-8 14:37:21

本帖最后由 clkyui 于 2012-4-8 14:46 编辑

怎么啦,大家看到51单片机就没兴趣 , 我详细说说用法:就2步
1)修改 INTERRUP.INC如下:
#define Project_Nameline
#define CPU         8032
#define Crystal       12
#define MachineCycle12

#define Uses_T0       1      //使用T0
#define Timer0      50       //T0延时50us
#define Timer0_Manual 0      //使用自动常量装载 (对应T0模式0)
#define T0_Priority   0      //T0中断优先级0 (可为1)

#define Uses_T1       1         //使用T1
#define Timer1      20*1000   //T1延时20*1000(微秒) =20ms
#define Timer1_Manual 1         //使用手动常量装载 (对应T0模式1)
#define T1_Priority   0         //T1中断优先级0 (可为1)

#define Uses_Uart   1         //使用Uart(串口)
#define Uart_BPS      9600      //Uart(串口)波特率 = 9600bps
#define Uart_BIT      8         //通讯位数 =8
#define Uart_Priority 0         //Uart中断优先级0 (可为1)

注意 // 后面的只是详细说明,预编译时是没有的
就象这样:
#define Uses_T0       1
#define Timer0      50
#define Timer0_Manual 0
#define T0_Priority   0

2)运行程序 inc52.exe
程序根据INTERRUP.INC 设置, 自动计算所有相关的寄存器的值
建立以下文件
<1> line.fun中断函数文件
static void uses_UART(void) interrupt 4
{
// Uart SET at 9600 BPS8 bitwork at 9615.38 BPSError: 0.16%
if(RI) {
   RI=0;
// 你的代码
       }
if(TI) {
   TI=0;
// 你的代码
       }
}

static void uses_T0(void) interrupt 1
{
// Timer0=50 uS(微秒)work in Auto load mode
// 你的代码
}

static void uses_T1(void) interrupt 3
{
// Timer1=20,000 uS(微秒)work in manual load mode
TR1=0;
TH1=0xB1;
TL1=0xE0;
// 你的代码
TR1=1;
}

<2> line.rom 寄存器自动设置文件 该文件无需任何修改,你知道就行了
<3> line.c方案框架文件

//CPU: 803212 MHz   12 clock
#pragma symbols
#pragma debug
#define CPU 8032
#define CPU_C51 1
#define MachineCycle 12
#include "At89x52.H"
#include "my_bit.inc"
// #include "line_inc.H"
#include "line.fun"
void main(void)
{
#include "line.rom"

while(1) {
            // 你的代码
         }
}
<4> c.bat 自动编译文件 , 当修改好相关的文件后, 执行该批处理文件,就能编译程序
d:\inc52\1.jpg
你无需翻手册,无需计算任何数值,inc52.exe为你做了所有的工作,你可以翻看源码,看他为你做了什么,怎么做

jetli 发表于 2012-4-8 18:24:50

感谢lz的辛勤劳动,,,

lz玩pc端编程熟练的话,倒是建议你做个keil插件,做成源码向导一样,,,,更好{:shocked:},

qlasamour 发表于 2012-4-10 23:39:10

看样子,好像不错,我还是用keil

lryxr2507 发表于 2012-4-11 09:12:56

这个不熟悉,还在用Keil,不过还是顶一个!

phone 发表于 2012-4-11 09:30:09

c51在使用中。

lyk07351 发表于 2012-4-11 09:34:02

这样写程序又省好多,不过俺还是想好好练下自己敲击代码的熟练程度

lee345 发表于 2012-4-11 09:42:37

要支持下,我还在用KEIL

renwocai 发表于 2012-4-11 10:35:53

附件下不了,115表示:文件拥有者未分享该文件。

renpeng009 发表于 2012-4-11 10:53:08

clkyui 发表于 2012-4-8 12:56 static/image/common/back.gif
源码来了

115网盘:


大哥,你没分享~

shield 发表于 2012-4-11 12:05:03

不能下载,没有共享..,....

fgcx 发表于 2012-4-11 21:52:17

这个好的, 不错,特别支持。

apple_03 发表于 2012-4-12 10:41:59

楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数!

longwu537 发表于 2012-4-12 14:28:45

apple_03 发表于 2012-4-12 10:41 static/image/common/back.gif
楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数! ...

你不是论坛第一负数,刚还看到一个-980多的呢……

shi_90 发表于 2012-4-12 16:27:45

这样子,就使人越来越懒了!!!

clkyui 发表于 2012-4-13 11:17:18

本帖最后由 clkyui 于 2012-4-13 11:26 编辑

shield 发表于 2012-4-11 12:05 static/image/common/back.gif
不能下载,没有共享..,....

115网盘确实已经不能分享了,不过本论坛我也上载了,只是论坛的文件下载我这边很慢

换个网盘吧
文件名:INC52-20120408.rar,访问地址:http://www.kuaipan.com.cn/file/id_5807203806085140.htm

clkyui 发表于 2012-4-13 11:42:20

phone 发表于 2012-4-11 09:30 static/image/common/back.gif
c51在使用中。

本来都是使用C51,本工具的目的只是 让你 使用 T0,T1,T2 及Uart时,自动帮你设置 sfr,例如:
IE=0x1A;
IP=0x00;
PCON=0x00;
SCON=0x40;
TCON=0x00;
TMOD=0x12;
TL0=0xCE;
TH0=0xCE;
TL1=0xE0;
TH1=0xB1;
T2CON=0x30;
T2MOD=0x00;
RCAP2L=0xD9;
RCAP2H=0xFF;
TL2=0xD9;
TH2=0xFF;
。。。。。。
以上代码自动建立 。。。

希望大家先试一试,然后帮顶
我可以负责任的说: 只要你还用8051系列,使用这个工具肯定不后悔


clkyui 发表于 2012-4-13 11:44:56

apple_03 发表于 2012-4-12 10:41 static/image/common/back.gif
楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数! ...

你注册多久-不够一个月。我注册多久-超过6年

mint 发表于 2012-4-13 15:55:02

clkyui 发表于 2012-4-13 11:44 static/image/common/back.gif
你注册多久-不够一个月。我注册多久-超过6年

那楼主经常潜水了~~~
属于“闷声发大财”的,O(∩_∩)O~

apple_03 发表于 2012-4-13 17:10:20

clkyui 发表于 2012-4-13 11:44 static/image/common/back.gif
你注册多久-不够一个月。我注册多久-超过6年

呵呵,马甲换了好几个了,要么记不住密码,要么因为CSDN的拖累,被封了马甲,索性重新注册一个而已。


另外,楼主注意到keil支持配置向导没有?可将需要设置的任何参数弄成配置文件的形式,点选几下就可以了,


如ARM系列中的 .s 文件,其实就是个配置文件,使用起来也很方便。


建议:楼主索性更进一步,把你这个软件弄成可以模拟效果的。

clkyui 发表于 2012-4-14 10:57:57

mint 发表于 2012-4-13 15:55 static/image/common/back.gif
那楼主经常潜水了~~~
属于“闷声发大财”的,O(∩_∩)O~

嗯,就是那种没有回报的,一方面我不会打字,另一方面本人木言木语,看是人家谈的正欢,自己却不知道说什么,怎么说,

mint 发表于 2012-4-14 12:32:27

clkyui 发表于 2012-4-14 10:57 static/image/common/back.gif
嗯,就是那种没有回报的,一方面我不会打字,另一方面本人木言木语,看是人家谈的正欢,自己却不知道说什 ...

呵呵,我也喜欢“讲前先听”,一般知道自己要讲什么才讲~~~
页: [1]
查看完整版本: 8051外设全自动配置 (有源码的哟)