马老师,**?用1602显示30s倒计时,第二次进入倒计时卡住了?**
实验是用51-AVR的板子搭的**?用1602显示30s倒计时,第二次进入倒计时卡住了?**
?用1602显示30s倒计时,第二次进入倒计时卡住了?
用1602显示30s倒计时,用按键控制,但第二次进入倒计时卡住了
用1602显示30s倒计时:按下两次c.0开始键输入进入倒计时,倒计时结束,然后按c.1为程序复位。然后进入第二次倒计
时,按下两次c.0开始键输入进入倒计时,但是卡住了,
1602 只显示:
“time remains”
“ 96”
然后就卡在这里了,找不到原因。。。。序复位时已经重新初始化了啊?单片机环境应该和第一次倒计时一样啊。
为什么会卡死在这里呢?
只能给M16断电,后重新通电开机第一次又可以,到了第二次倒计时又卡死了。。。。
请大家帮指出小弟的错误:
$regfile = "m16def.dat"
$crystal = 1000000
Dim Beginbutton As Bit
Dim timing As byte
Dim Resetbutton As Bit
Config Pinc.1 = Input 'c.0为开始键输入口.
Config Pinc.3 = Input '定义c.1为程序复位键输入口
Declare Sub Timeout(n As Byte)
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs =
Porta.2
Config Lcd = 16 * 2
Test0: 'Test0:端口初始化输入全部拉高
Portc.1 = 1
Portc.3 = 1
Beginbutton = 1
Resetbutton = 1
Portc.3 = 1
Portc.1 = 1
Timing = 30 '定时Timing为30s倒计时
Cls
Cursor Off Noblink
Locate 1 , 3
Lcd "Test is ok!" '检测LCD
Locate 2 , 1
Lcd "pls press start"
Test1: 'Test1开始扫描开始按键
Do
Beginbutton = Pinc.1
If Beginbutton = 0 Then Sound Pinb.0 , 100 , 100
If Beginbutton = 0 Then Cls
If Beginbutton = 0 Then Lcd " begin!" 'LCD提示按下开始键
If Beginbutton = 0 Then Exit Do ' 检测到开始键按下跳出徇环到Test2续扫描抢答按键
loop
Test2:
Beginbutton = 1 '开始键拉高
Do
Beginbutton = Pinc.1 ' 再次检测开始键
If Beginbutton = 0 Then Sound Pinb.0 , 100 , 100
If Beginbutton = 0 Then Call Timeout(timing) '如果开始键再次按下跳转到倒计时Timeout
loop
end
Sub Timeout(n As Byte) ' 倒计时Timeout(n As Byte)
Local A As Byte
A = 0
A = N
Cls
Locate 1 , 3
Lcd "time remains"
Do '显示到计时过程
Locate 2 , 7
Lcd A
Wait 1
A = A - 1
If A = 0 Then Exit Do '到计时结束跳出到等待复位
Loop
Cls
Locate 1 , 4
Lcd "timeout"
Locate 2 , 1
Lcd "pls press reset"
Do '等待复位
Resetbutton = Pinc.3
If Resetbutton = 0 Then Sound Pinb.0 , 100 , 100 '按键发声
If Resetbutton = 0 Then Cls
If Resetbutton = 0 Then Goto Test0
Loop
End Sub
出现问题:第一次进入倒计时成功运行,按c.1(不用reset口)程序复位重新开始,然后按两次开始键进如第二轮道计
时LCD1602 1602 只显示:
“time remains”
“ 96”
然后就卡在这里了!
为什么呢?程序复位时已经重新初始化了啊?单片机环境应该和第一次倒计时一样啊。
实验是用板子搭的 我是实验写抢答器的,这个是其中的一个功能--抢答倒计时,在整个程序中就出现第二次进入倒计时卡住了,上面的是我吧出问题的部分copy出来ISP下载到板子上调试,问提依然存在。。。。。。。。
变量没有复位?---我都跳到“Test0:”开始执行了。。。
//
Test0: 'Test0:端口初始化输入全部拉高
Portc.1 = 1
Portc.3 = 1
Beginbutton = 1
Resetbutton = 1
Portc.3 = 1
Portc.1 = 1
Timing = 30 '定时Timing为30s倒计时
//
不知道是哪个变量出问题没有复位啊 :( 先重新编写程序,不准用goto语句。
页:
[1]