2012-05-21 2 views
1

Я использую DS89C450 timer0 для подсчета от 0, когда значение входящих данных равно «0», и оно остановится только тогда, когда данные «1» будут сравниваться со значениями, которые у меня есть. Однако можно ли сохранить значение того, сколько таймера подсчитано, поэтому я мог бы использовать if loop для сравнения значений.Возможно ли сохранить значение таймера в переменной?

Для примера:

for(i=0;i<15;i++) 
{ 
    if(in_data == 0) 
    { 
    TH0 = 0x00;   //Set Timer0 to count from 0 
    TL0 = 0x00; 
    TR0 = 1;    //Start Timer0 
    if(in_data == 1)    //if InputData = 1 
    { 
     TR0 = 0;   //Stop Timer0 
     //Store Timer0 value under "TimerValue" 
    } 
    if(TimerValue == 2212)   //If TimerValue = 2212(decimal)/08A4(Hex) 
    { 
     Data[i] = 0x00;    //Set Data[i] = 0 
    } 
} 

Кто-нибудь знает можно ли сделать так?

ответ

1

Я предполагаю, что TH0 хранит ценность ваших таймеров.

Вы должны быть в состоянии найти свой размер вашего процессора для этого порта в справочнике.

Тогда вы можете просто

//since no more details are provided i'm assuming TH0 and TL0 are 8 bits 
short TimerValue = (TH0 << 8) | TL0; // to store the value. 
+0

Ну, TH0 и TL0 оба имеют значение таймера. Таким образом, даже при сохранении только TH0 это не точно, так как оно пропускает значение TL0 – xrainxfallx

+0

. Тогда они, вероятно, являются высокими и низкими байтами. См. Обновление. – RedX

+0

Кстати, это то, о чем стоит упомянуть при постановке вопроса. Размер порта и какой порт содержит что. – RedX

Смежные вопросы