Возникла проблема.В программе на bascom организация задержки в 1 секунду дает отставание от реального времени.Использовался оператор wait и waitms.
Может какая-то вставка на asm поможет или настройка таймера?
Как сделать?
roboforum.ruТехнический форум по робототехнике. |
|
|
$regfile = "m16def.dat"
$crystal = 8000000
$lib "lcd4.lib"
'$lib "mcsbyte.lbx"
'Config Rc5 = Pind.2
'Enable Interrupts
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.2 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
Config Lcd = 16 * 2
Dim H1 As Integer
Dim H2 As Integer
Dim M1 As Integer
Dim M2 As Integer
Dim S1 As Integer
Dim S2 As Integer
Dim B As Integer
Dim Ndat As Byte
Clockzero:
Let S1 = 0
Let S2 = 0
Let H1 = 0
Let H2 = 0
Let M1 = 0
Let M2 = 0
Let M1 = 0
Let M2 = 0
Cls
Locate 2 , 1
Lcd "Hour:"
Locate 2 , 8
Lcd "Min:"
Locate 2 , 13
Lcd "Sec:"
Do
Seconds:
If S1 = 6 Then M2 = M2 + 1
If S1 = 6 Then S1 = 0
Locate 1 , 13
Lcd S1
If S2 = 10 Then S2 = 0
Locate 1 , 14
Lcd S2
Minutes:
Locate 1 , 8
Lcd M1
If M2 = 10 Then M1 = M1 + 1
If M2 = 10 Then M2 = 0
If M1 = 6 Then H2 = H2 + 1
If M1 = 6 Then M1 = 0
Locate 1 , 9
Lcd M2
Houres:
If H1 = 6 Then Goto Clockzero
Locate 1 , 1
Lcd H1
If H2 = 10 Then H1 = H1 + 1
If H2 = 10 Then H2 = 0
Locate 1 , 2
Lcd H2
S2 = S2 + 1
If S2 = 10 Then S1 = S1 + 1
Waitms 1000
Loop
Как вариант - пишите в любом из примеров CVAVR строку delay_ms(1000); подключаете delay.h ? компилите и смотрите АСМ код в файле листинга.Zoom писал(а):а как например написать на asm задержку по таймеру на 1 секунду, чтобы ее всавить в качестве паузы?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37