TSCYWH 发表于 2008-1-31 21:29:32

为何以下两段BASCOM代码,一段正常,另一段A端口不闪烁?

最近才知有BASIC编程的AVR,在看《AVR单片机BASIC语言编程及开发》,有几个问题困扰了我三天,希望阿莫、马潮老师、其它师傅能于指点,
先谢谢了!问题如下:
$regfile = "m128def.dat"
$crystal = 8000000
$baud = 19200
Config Porta = Output
Dim A As Byte , B As Byte , C As Byte
C = &H0F
   Do
      Porta = C
   '   Waitms 200
      For A = 0 To 255
      For B = 0 To 255

      Next B
      Next A
      C = Not C
   Loop
End
以上程序调试、下载后,硬件A口闪烁显示正常。

$regfile = "m128def.dat"
$crystal = 8000000
$baud = 19200
Config Porta = Output
Dim A As Byte , B As Byte , C As Byte
C = &H0F
   Do
      Porta = C
      Waitms 500
      'For A = 0 To 255
      'For B = 0 To 255

      'Next B
      'Next A
      C = Not C
   Loop
End
程序调试正常、下载后硬件A口只显示不闪烁。
开始我怀疑BASCOM的版本有问题,试了1.11.7.2;1.11.8.7,在不同的电脑上,还是一样。
请高人赐教!



以下蓝色文字由站长:armok 于:2008-02-01,08:09:52 加入。你的原标题:“<font color=black>BASCOM问题请教” 不合符规定。请更改成能说明帖子大意的标题
试想一下,如果本论坛的帖子标题清一色的‘帮助!’,‘ADC求救!’等笼统的标题,你在阅读的过程中会造成许多麻烦。
所以本论坛规定:一定要起一个能说明帖子大意的标题。不允许“关于 AVR 的 ADC 使用!”这种笼统标题。作为标题,必须说明清楚:
 ①你是在请教问题,还是在介绍有关的知识?
 ②ADC的问题有许多,你是想说那方面的内容?
注意以上两点,标题应该改成如:“请教:ADC 可以不使用中断吗?”。
起一个能说明帖子大意的标题,除了减轻我们的帖子分类整理工作,还方便其它人阅读,节省大家的时间。
注:使用合格的标题,对你来说只是举手之劳,但却会为我们的管理工作提供很大的便利。谢谢你的支持。
./bbs_upload/files_6/armok01122228.gif

ecat 发表于 2008-1-31 23:14:06

加上一句$hwstack = 50试一试。

machao 发表于 2008-2-1 02:15:03

首先检查你AVR真实的系统时钟频率,如果是1M的话,那么你LED的闪烁周期就是4秒了.

TSCYWH 发表于 2008-2-1 12:01:18

谢谢,ecat!加了$hwstack = 50,试了还是一样。
马老师,我等了长时间,就是没有闪烁。我用的是双龙公司SL-MEGA128的试验板,用A口的数码管来试的;相同硬件为什么一段程序会闪,用Waitms就不行呢?请马老师及高人指点。

machao 发表于 2008-2-1 12:35:26

$regfile = "m16def.dat"
$crystal = 1000000
Config Porta = Output
Dim A As Byte , B As Byte , C As Byte
C = &H0F
   Do
      Porta = C
      Waitms 500
      C = Not C
   Loop
End
==============================================
以上代码我在M16上试过了,没有问题,WAITMS肯定好用.(1.11.8.7 DEMO版)
另外检查你M128的熔丝,是否配置成M128的工作模式,芯片出厂为M103模式,这样调用子程序会出问题的.

TSCYWH 发表于 2008-2-1 14:14:25

马老师:在SL ISP下,配置熔丝设置下,去掉"ATmega103 Compatibility Mode "选项前的√。
写入后,试验板竟然不亮了;从新打勾写入后,试验板恢复原来一样;
是这样配置M128的工作模式的吗,只去掉"ATmega103 Compatibility Mode "选项前的√。?

machao 发表于 2008-2-1 14:24:59

对,将"ATmega103 Compatibility Mode "选项前的"√"去掉。

TSCYWH 发表于 2008-2-1 17:05:25

马老师:去掉"ATmega103 Compatibility Mode "选项前的√,
写入后,试验板竟然不亮了;那又是什么原因?是SL-MEGA128试验板问题?
闪烁不闪烁的问题要从那方面去想呢?
现在我一直在站内拜读有关贴子,....

ecat 发表于 2008-2-1 17:33:50

1,首先要保证M128不在ATmega103模式。
2,保证系统的时钟源频率正确。(注意内部时钟和外部时钟)
3,确认芯片不在JTAG模式。
4,程序先用bascom软件仿真一下,确保程序正确。

TSCYWH 发表于 2008-2-1 17:46:25

听马老师的话!
我就把这片M128当M16用,把
$regfile = "m128def.dat"
改成
$regfile = "m16def.dat"
结果,Wairms 500是正确的,A口会闪烁。

说明BAScom-AVR 1.11.8.7 DEMO 编译烧写M128有问题!

谢谢,马老师和热心的ecat!

                  TSC_HZ&163.com于2008,02,01

machao 发表于 2008-2-1 18:25:45

$regfile = "m128def.dat"
$crystal = 8000000
Config Porta = Output
Dim A As Byte , B As Byte , C As Byte
C = &H0F
   Do
      Porta = C
      Waitms 500
      C = Not C
   Loop
End

以上代码我在M128上也试过了,没有问题,WAITMS肯定好用.(1.11.8.7 DEMO版,使用片内RC 8M)
如果你使用并口的ISP,可直接在BASCOM-AVR中查看M128的熔丝,为M128工作模式.如果我改成M103模式,LED就不闪动了.
我也使用了SLISP软件,也是去掉"ATmega103 Compatibility Mode "选项前的√,LED就正常闪动了.
 

TSCYWH 发表于 2008-2-1 19:48:38

马老师,我试了你说的,在M103模式,LED是不闪动了;
我使用SLISP串口软件,去掉"ATmega103 Compatibility Mode "选项前的√,LED就不亮了!!!。
是不是我的SL-MEGA128试验板有问题?
把 $regfile = "m128def.dat" 改成 $regfile = "m16def.dat"、$regfile = "m32def.dat" ;在M103模式就可以!
$regfile = "m64def.dat"、$regfile = "m128def.dat"不管在不在M103模式,都不行,请明示!

machao 发表于 2008-2-1 20:33:02

在BASCOM-AVR环境中的BASCOM-AVR OPTIONS中,选中m128def.dat,然后重新编译代码下载试试.

TSCYWH 发表于 2008-2-2 12:10:57

马老师你好:
        我已经把所有情况都整理了一下,用邮件先发给你看一下。实在不能解决问题的话,我想要不我把试验板用快递发给你,你给我试一下板子是否为好的。马老师你应该在上海吧,因为华东师大好象在上海的;我在杭州下辖的桐庐县,我现年36岁,中专学历,2002年下岗,现在在工地上当电工,由于天气的雨雪,今年放假比较早;想趁这段时间,包括春节来学习一下,我向往的单片机;因为BASIC、VB有所接触,所以对BASCOM—AVR更深情向往。
        昨晚用 ”M32def.dat” 头文件试X=GetKbd() ,又发现:在硬件下也不是按键弹起后才有效的,而是一直有效;所以在试《AVR单片机BASIC语言编程及开发》中P85页S0=A(X)与Loop之间只能加Waitms 500才能有书上的效果(虽然在贴子上我有耳闻,仿真会这样,下载后硬件是正常)。
        我想照这样下去的话,“看书和做实验”还不知道会碰上什么问题呢!还是将已发现的问题弄清楚,再学习下去的好。我本想把试验板发回卖试验板的上海双龙公司去的,但他们今天放假了,我又实不想放弃春节这么长的学习机会,想了想或许马老师能帮我;不知马老师来过桐庐旅游没有,有机会来玩的话,我给你当向导。
        请告诉我你的邮箱。
        祝万事如意!                                                                             
                                童水春13958007759
                                   TSC_HZ@163.com
                                             2008-2-2
还有,MCU下载程序——广州双龙电子有限公司V1.6.0.7,串口波特率只能选19200,其它不行。(可看图片)
我怀疑是不是试验板“ISP串行下载管理”芯片ATTINY2313V里面的程序,双龙公司的人给弄错了。

machao 发表于 2008-2-2 13:16:28

M128不适合初学者使用,建议你从阿莫购买AVR-51多功能实验板,先从M16开始.
如果下一步要做实际的东西的话,还是使用C语言比较好.另外,我编写的《AVR单片机嵌入式系统原理与应用实践》一书可以参考.

其他方面请你直接询问双龙的技术支持人员.

TSCYWH 发表于 2008-2-2 19:57:21

知道了,谢谢。
页: [1]
查看完整版本: 为何以下两段BASCOM代码,一段正常,另一段A端口不闪烁?