论坛风格切换切换到宽版
  • 6004阅读
  • 32回复

89单片机编程高手的进,有东西送! [复制链接]

上一主题 下一主题
离线chnsat0009
 
发帖
642
只看楼主 倒序阅读 0楼 发表于: 2009-01-28
请高手们修改这个频率计的hex程序,本电路设计的不错,就是hex程序中有bug,导致不能正常工作,具体如下:

目前有2个hex程序,main.hex是原作者熊军锋老师做的,
另外一个是本坛的制作。

硬件电路做好后烧进去原作main.hex,按照熊老师的方法,选低频档,自测时钟频率11.0592mhz,显示11.059201mh,或测89s52 30脚,显示1.843200mhz,按说这完全符合设计;但是切换到高频档就有显示大错了,前级分频是mb506,按照原理图接成了64分频,信号源输出165.0000mhz,显示165/64=2.578125mhz,这个应该是程序中的某段出现错误,请高手们帮助重新改进。

把原作擦去,第二个hex烧进去,结果低段自测11.0592时钟,显示11.062465,切到高段,输入165.0000,稳定显示165.049402,信号源输出从136-165,显示值始终高出40-49khz,怀疑是fujiachun老师做程序时,时钟频率没弄对,不是11.0592。

这2个程序,任何一个能修改好用即可,我手上的c3358,mc2833,mc3361,cd4013,红袍电阻,瓷介微调,部分70-2拆机板,还有一些晶振,部分1971,2053,1972等发射管,还有一些别的零件,要什么给什么。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bg8ht
发帖
3394
只看该作者 1楼 发表于: 2009-01-28
看看,能用不
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线chnsat0009
发帖
642
只看该作者 2楼 发表于: 2009-01-28
'
看看,能用不
'

你好老兄!这个应该是《无线电》2004年12期的配套程序吧?
我刚才烧了下,误差超大,输入165mhz,显示170.***khz,还不稳定,低段也同样,测自身时钟误差都很大,一会15.***mhz,一会37.***mhz。
我想是因为硬件电路和我这个不一样所致。
离线小比尔/5
发帖
2582
只看该作者 3楼 发表于: 2009-01-28
首先请检查硬件10脚和11脚的电路是否正常
另外,如果有源代码就好办了...
离线bg8ht
发帖
3394
只看该作者 4楼 发表于: 2009-01-28
这个电路我也做过。有几个问题:
1、这个不是无线电配套程序。
2、要想频率准确,那么,就不能用普通的11.0592的晶振。我用外部信号源输入做参考,在不用分频器的情况下,可以很准确的侧倒80m左右。
3、和你选择的ic有关系,决定了你的测量上限。
4、不要期望这个能测得像54132a一样准确。

祝你diy愉快:)
离线肖月
发帖
29
只看该作者 5楼 发表于: 2009-01-28
我记得熊军峰的电路用的是12.8m的晶振.
离线chnsat0009
发帖
642
只看该作者 6楼 发表于: 2009-01-28
[quote=肖月]我记得熊军峰的电路用的是12.8m的晶振.[/quote]

《无线电》2004年12期上的是12.8m的时钟,这个电路是后来的改版,用得是11。0592m。

其实问题很简单,因为切到高端,显示的是实际频率/64的值,那么让高段通道显示值*64,就解决问题了。可惜俺不懂的编程,只会拿hex烧写。。。。。。
离线chnsat0009
发帖
642
只看该作者 7楼 发表于: 2009-01-28
今天反复对照了熊老师以前的资料,发现他用的是89c51,而我用的89s52,能拿89c51的程序烧89s52吗?
离线HK007
发帖
199
只看该作者 8楼 发表于: 2009-01-28
'
今天反复对照了熊老师以前的资料,发现他用的是89c51,而我用的89s52,能拿89c51的程序烧89s52吗?
'
没问题.
有原码就好办了,hex文件没用.
离线bg8am
发帖
1444
只看该作者 9楼 发表于: 2009-01-28
'
今天反复对照了熊老师以前的资料,发现他用的是89c51,而我用的89s52,能拿89c51的程序烧89s52吗?
'
如果代码没有用到超过128字节的ram,两个是一样的
离线chnsat0009
发帖
642
只看该作者 10楼 发表于: 2009-01-28
'
没问题.
有原码就好办了,hex文件没用.
'


用这2个hex文件反汇编得到的asm文件算是源码不?
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线小比尔/5
发帖
2582
只看该作者 11楼 发表于: 2009-01-28
我已经基本上反汇编完了
除了计算那部分
带注释、标号

main程序的原理是,利用921600机器周期(与11.0592mhz有关)个延时来产生一秒钟的闸门信号,利用外置和内置t0计数器进行计数,读到结果以后利用液晶屏显示(khz、mhz、hz或者“无信号”)(中间的算法还没搞清楚)
由于缺少判定p3.0和p3.1的部分,实际上程序对分频数是不管的。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线一异
发帖
868
只看该作者 12楼 发表于: 2009-01-28
修改这个hex文件,或许还不如重新编程。
当然,用反汇编的程序来改也是可行的,不过比较麻烦一些。我想,除非自己想做这个东西,大概很难找到人愿意花功夫去修改这个程序。
离线小比尔/5
发帖
2582
只看该作者 13楼 发表于: 2009-01-28
[quote=一异]修改这个hex文件,或许还不如重新编程。
当然,用反汇编的程序来改也是可行的,不过比较麻烦一些。我想,除非自己想做这个东西,大概很难找到人愿意花功夫去修改这个程序。[/quote]

用c语言内嵌汇编改写算了...
汇编看得头都花了
离线小比尔/5
发帖
2582
只看该作者 14楼 发表于: 2009-01-29
hex文件改好了,上机试一下吧!
试完请给张实图,以评价效果。

ps:main.hex这个程序里用的二进制转bcd算法,比较复杂,所以把我看晕了。

附件的unasm是汇编反汇编整理后的源码,hacked是hex文件
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线chnsat0009
发帖
642
只看该作者 15楼 发表于: 2009-01-29
老兄辛苦了!

不过,烧机之后还是不行,见图,低频段自测时钟正常,测ale脚也是时钟的1/6即1.843200mhz。换到高段只显示16hz,输入与否都一样,重开机也一样,没反应。这是为何?
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bg8am
发帖
1444
只看该作者 16楼 发表于: 2009-01-29
给我电路图,我帮你重新写一个程序

看到电路图了,给我段时间哈
离线chnsat0009
发帖
642
只看该作者 17楼 发表于: 2009-01-29
'
给我电路图,我帮你重新写一个程序
看到电路图了,给我段时间哈
'

好啊,先谢过老兄了!

不急着用,老兄慢慢写,电路图是一楼那个2.0g.pdf
离线BD5UYW
发帖
4657
只看该作者 18楼 发表于: 2009-01-29
回楼主,原电路和程序有多处错误,我在这上面绕了半年,后来干脆自已重写代码。
原电路对分频器使用是错误的。
原程序对高低频切换是错的,还有几处换算错误。
正确的电路请参考h-f1的电路,手机上网,上不了图,请见我签名链接。
离线小比尔/5
发帖
2582
只看该作者 19楼 发表于: 2009-01-29
不好意思,程序在改的时候出现错漏
今天晚上再看看