3732|3

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

at89c2051编程问题 [复制链接]

大家好, 我遇到一个很傻瓜的问题。我从网站下载了一个.C的电机驱动程序。但是放到keil软件里面编辑HEX,怎么都编译不好 。不知道是软件问题还是我本人技术有问题。请大家帮我分析下
程序如下:
stepper.c
stepper.hex
/*
* STEPPER.C
* sweeping stepper's rotor cw and cww 400 steps
* Copyright (c) 1999 by W.Sirichote
*/
#i nclude c:\mc5151io.h /* include i/o header file */
#i nclude c:\mc5151reg.h
register unsigned char j,flag1,temp;
register unsigned int cw_n,ccw_n;
unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}
#define n 400
/* flag1 mask byte
0x01 run cw()
0x02 run ccw()
*/
main()
{
flag1=0;
serinit(9600);
disable(); /* no need timer interrupt */
cw_n = n; /* initial step number for cw */
flag1 |=0x01; /* initial enable cw() */
while(1){
{
tick_wait(); /* wait for 10ms elapsed */
energize(); /* round-robin execution the following tasks every 10ms */
cw();
ccw();
}
}
}
cw(){
if((flag1&0x01)!=0)
{
cw_n--; /* decrement cw step number */
if (cw_n !=0)
j++; /* if not zero increment index j */
else
{flag1&=~0x01; /* disable cw() execution */
ccw_n = n; /* reload step number to ccw counter */
flag1 |=0x02; /* enable cww() execution */
}
}
}
ccw(){
if((flag1&0x02)!=0)
{
ccw_n--; /* decremnent ccw step number */
if (ccw_n !=0)
j--; /* if not zero decrement index j */
else
{flag1&=~0x02; /* disable ccw() execution */
cw_n = n; /* reload step number to cw counter */
flag1 |=0x01; /* enable cw() execution */
}
}
}
tick_wait(){ /* cputick was replaced by simpler ASM code 10ms wait */
asm" JNB TCON.5,*"; /* wait for TF0 set */
asm" CLR TCON.5"; /* clear TF0 for further set */
asm" ORL TH0,#$DC"; /* reload TH0 with $DC, TL0 = 0 */
}
energize(){
P1 = step[(j&0x07)]; /* only step 0-7 needed */
}



2.png (343.14 KB, 下载次数: 0)

2.png

3.png (18.91 KB, 下载次数: 0)

3.png

23.png (195.59 KB, 下载次数: 0)

23.png

最新回复

整个c文件,直接复制过来就用?这是很不严谨的做法。你应该先找一个正常的工程。分析这个c文件包含的主要内容。把变量,函数这些添加到原来的工程中对应的文件。一点点调试。这样才相对风险小一些。另外,前期做多分析他的代码,后期改功能的时候,也稍微容易一些。  详情 回复 发表于 2018-1-29 13:08
点赞 关注
 

回复
举报

6040

帖子

195

TA的资源

版主

沙发
 
#i nclude c:\mc5151io.h /* include i/o header file */
#i nclude c:\mc5151reg.h

这两句有问题,而且问题很大,你自己改吧,如果不会改就别折腾了,以后的坑更多。
 
 
 

回复

6040

帖子

195

TA的资源

版主

板凳
 
包含头文件不仅是语法错误,关键是你有这俩头文件吗?
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

4
 
整个c文件,直接复制过来就用?这是很不严谨的做法。你应该先找一个正常的工程。分析这个c文件包含的主要内容。把变量,函数这些添加到原来的工程中对应的文件。一点点调试。这样才相对风险小一些。另外,前期做多分析他的代码,后期改功能的时候,也稍微容易一些。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表