Microchip软件/Atmega32 /C语言
通过以下实验代码反推实验目的和实验结论
/*
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util\delay.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
int main(void)
{
DDRB=0b10000000;//порт: 7 разрядов на ввод информации, 1 на вывод.
DDRC=0xFF;//порт на вывод для оценки загрузки процессора
uint8_t cps=0, pps=0;// переменные для работы алгоритма антидребезга
uint8_t pState=0;// для хранения значения порта
unsigned long delayCicle; //переменная для отсчета циклов задержки
while (1)
{
PORTC=0x00; // для оценки загрузки процессора
/* примерное время программной задержки на исполнении пустого цикла
* for (delayCicle=0; delayCicle<100; delayCicle++) ;
* Количество_циклов_процессора = 34 * delayCicle + 29
* при частоте генератора 8 МГц за 1 мкс выполняется 8 циклов процессора
* время_задержки = Количество_циклов_процессора / 8
*/
for (delayCicle=0; delayCicle<33; delayCicle++) ;
PORTC=0xFF; // для оценки загрузки процессора
cps=PINB & 0b00001000;//обрабатываем только 1 бит порта (по заданию)
if (cps^pps)
{ //сюда попадаем, если значение на входе изменилось
pps=cps;
continue; //переход на начало цикла
}
// сюда попадаем только если значение на входе стабильно
if (pState!=cps)
pState=cps;// обновляем значение теущего состояния порта, если изменилось
if (pState) // выводим результат работы алгоритма в порт B чтобы сохранить в логфайл
PORTB |= 0b10000000; // алгоритм определил включенное состояние порта
else
PORTB &= 0b01111111;// алгоритм определил вЫключенное состояние порта
}
}
现在出现什么问题了