Проблеми з програмним Keil

G

Guest

Guest
Привіт всім,

Що може бути поганого в цьому одна не працює взагалі.І, будь ласка, скажіть мені, як обчислити час затримки.

# Включити <AT89S8252.h>

недійсним чекати (недійсними)
(
;
)

Основними недійсним (недійсними)
(
непідписаних Int I;

P1 = 0;

в той час як (1)
(
P1 = 1;
для (я = 0; я <10000; я )
(
чекати ();
)
P1 = 0;
)
)Спасибі

 
ваші очікування () функція не деталізовані.можуть бути деякі проблеми.І якщо він порожній, я бачу, в ньому.В іншому випадку, здається добре!

 
Я отримав Keil коди формі десь і змінила його мало.Зачекайте функції ніс, там теж!Якщо це не так, то будь ласка, дайте мені правильний код?А час затримки?

 
Чому б не використати таймер для затримки?Я рекомендую моє рішення на самому проекті.Я використовую таймер для обчислення затримки.встановити контролер в режим сну.якщо таймер знизиться до 0, тригер таймера до перерви в обслуговуванні код, який повернення.і повернутися до наступної інструкції основної програми.

 
Ваш код в порядку.

Проблема (і рішення), я думаю, це:

1S) Ви пишете, P1 = 1;
2S) Ви втрачаєте деякий час (цикл)
3S) Ви пишете, P1 = 0;
4S) Повторіть 1-3: Ви пишете, P1 = 1:

Крок 3 (P1 = 0) є дуже коротким, тому що ви відразу написати P1 = 1.Ви повинні включити ще один цикл після кроку 3.

З повагою, svicent

 
Вам не потрібно чекати функції на всіх, в цьому випадку я сувенірної продукції використовуйте це:

для (я = 0; я <10000; я )
(
)

Програма підрахунку я від 0 до 10000, так що ви зробили функції чекати, чекати witout функції.

Якщо у Вас розглянути можливість використання для переривання очікування (в серйозних Додатки), Каус ваша програма буде зупинятися в той момент, поки я багатий 10000, так що все інше буде скінчився для того часу.

Mr.Cube

 
Дякуємо за пропозицію, все ж таки це антиплазмін вирішити мою проблему.Моє обладнання працює нормально, а проблема, схоже, на боці програмного забезпечення.Ось шістнадцятковий які я отримую після компіляції

: 01002B0022B2
: 10000300E4F590759001E4FFFE12002B0FBF000191
: 0C0013000EBE27F5BF10F2E4F59080E768
: 0300000002001FDC
: 0C001F00787FE4F6D8FD7581070200032D
: 00000001FF

Що проблема?

 
хай
Сподіваюся, ви додали чекати після очищення порт 0.

Замість того, щоб перевірити HEX демонтаж вікна в Keil і подивитися, як код компілюється і подивитися, якщо Programe схвалений у симуляторі.
Як висновок, що зараз?
Picstudent

 
Picstudent отримати точку,у вас є всього кілька циклів де P1 = 0, так що його завжди дорівнює 1.

Якщо у вас є osciloscope ви можете бачити, що і ми всі сліпі, просто додайте ще один чекати після P1 = 0.Mr.Cube

 

Welcome to EDABoard.com

Sponsor

Back
Top