搜索
bottom↓
回复: 24

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

[复制链接]

出0入0汤圆

发表于 2012-4-8 12:55:07 | 显示全部楼层 |阅读模式
本帖最后由 clkyui 于 2012-4-8 15:50 编辑

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-4-8 12:56:49 | 显示全部楼层
本帖最后由 clkyui 于 2012-4-8 15:55 编辑

源码来了

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入98汤圆

发表于 2012-4-8 13:00:21 来自手机 | 显示全部楼层
最近正好在回顾 谢谢楼主程序

出0入0汤圆

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

出0入0汤圆

 楼主| 发表于 2012-4-8 14:37:21 | 显示全部楼层
本帖最后由 clkyui 于 2012-4-8 14:46 编辑

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

#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 BPS  8 bit  work at 9615.38 BPS  Error: 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: 8032  12 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为你做了所有的工作,你可以翻看源码,看他为你做了什么,怎么做

出0入0汤圆

发表于 2012-4-8 18:24:50 | 显示全部楼层
感谢lz的辛勤劳动,,,

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

出0入0汤圆

发表于 2012-4-10 23:39:10 | 显示全部楼层
看样子,好像不错,我还是用keil

出0入0汤圆

发表于 2012-4-11 09:12:56 | 显示全部楼层
这个不熟悉,还在用Keil,不过还是顶一个!

出0入0汤圆

发表于 2012-4-11 09:30:09 | 显示全部楼层
c51在使用中。

出0入0汤圆

发表于 2012-4-11 09:34:02 | 显示全部楼层
这样写程序又省好多,不过俺还是想好好练下自己敲击代码的熟练程度

出0入0汤圆

发表于 2012-4-11 09:42:37 | 显示全部楼层
要支持下,我还在用KEIL

出0入0汤圆

发表于 2012-4-11 10:35:53 | 显示全部楼层
附件下不了,115表示:文件拥有者未分享该文件。

出0入0汤圆

发表于 2012-4-11 10:53:08 | 显示全部楼层
clkyui 发表于 2012-4-8 12:56
源码来了

115网盘:

大哥,你没分享~

出0入0汤圆

发表于 2012-4-11 12:05:03 | 显示全部楼层
不能下载,没有共享..,....

出0入0汤圆

发表于 2012-4-11 21:52:17 | 显示全部楼层
这个好的, 不错,特别支持。

出0入0汤圆

发表于 2012-4-12 10:41:59 | 显示全部楼层
楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数!

出0入0汤圆

发表于 2012-4-12 14:28:45 | 显示全部楼层
apple_03 发表于 2012-4-12 10:41
楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数! ...

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

出0入0汤圆

发表于 2012-4-12 16:27:45 | 显示全部楼层
这样子,就使人越来越懒了!!!

出0入0汤圆

 楼主| 发表于 2012-4-13 11:17:18 | 显示全部楼层
本帖最后由 clkyui 于 2012-4-13 11:26 编辑
shield 发表于 2012-4-11 12:05
不能下载,没有共享..,....


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

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

出0入0汤圆

 楼主| 发表于 2012-4-13 11:42:20 | 显示全部楼层
phone 发表于 2012-4-11 09:30
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系列,使用这个工具肯定不后悔



出0入0汤圆

 楼主| 发表于 2012-4-13 11:44:56 | 显示全部楼层
apple_03 发表于 2012-4-12 10:41
楼主的莫元是个位数,已经很厉害了,我的是负数, -86 , 呵呵 ,这个论坛第一负数! ...

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

出0入0汤圆

发表于 2012-4-13 15:55:02 | 显示全部楼层
clkyui 发表于 2012-4-13 11:44
你注册多久-不够一个月。我注册多久-超过6年

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

出0入0汤圆

发表于 2012-4-13 17:10:20 | 显示全部楼层
clkyui 发表于 2012-4-13 11:44
你注册多久-不够一个月。我注册多久-超过6年

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


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


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


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

出0入0汤圆

 楼主| 发表于 2012-4-14 10:57:57 | 显示全部楼层
mint 发表于 2012-4-13 15:55
那楼主经常潜水了~~~
属于“闷声发大财”的,O(∩_∩)O~

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

出0入0汤圆

发表于 2012-4-14 12:32:27 | 显示全部楼层
clkyui 发表于 2012-4-14 10:57
嗯,就是那种没有回报的,一方面我不会打字,另一方面本人木言木语,看是人家谈的正欢,自己却不知道说什 ...

呵呵,我也喜欢“讲前先听”,一般知道自己要讲什么才讲~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 03:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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