| ATtiny817 具有不同的寄存器来控制引脚的方向。首先,我们有如下所示的 DIR 寄存器。 
 为了设置引脚输出或输入,我们可以分别将 1 或 0 写入寄存器的特定位。例如,要将引脚 PC0 设置为输出,我们可以写PORTC.DIR = 1<<0.此语句会将引脚 PC0 设置为输出,但也会将其他引脚设置为输入。
 
 为了屏蔽其他引脚,我们可以先读取寄存器,然后修改第 0 位,然后将数据写回寄存器。这可以按如下方式完成PORTC.DIR |= 1<<0
 
 或者,要将特定引脚设置为输出或输入,我们也可以使用 DIRSET 和 DIRCLR 寄存器。
 
 
 要将引脚 PC0 设置为输出,我们可以使用 DIRSET 寄存器,PORTC.DIRSET = 1<<0.要将引脚 PC0 设置为输入,我们可以使用 DIRCLR 寄存器,PORTC.DIRCLR = 1<<0.
 
 我们可以使用上述任何一种方法将引脚设置为输出。LED 连接到 PC0,因此我们将其设置为输出。
 
 
 在 main 函数中,我们将首先初始化时钟,然后将引脚 PC0 设置为输出。int main(void)
{
        clkInit();
        PORTC.DIR |= (1<<0);   //Set PC0 as Output, PORTC.DIRSET = 1<<0 can also be used
 现在我们将在 while 循环中闪烁 LED。要使 LED 闪烁,我们需要在一段时间后将引脚 PC0 设置为高电平和低电平。MCU同样具有不同的寄存器来设置和复位引脚的状态。
 首先,我们有 OUT 寄存器。
 
 
 将 1 写入特定位会将引脚设置为高电平,写入 0 会将引脚重置为低电平。但就像DIR寄存器一样,该寄存器也会影响其他引脚的状态。因此,我们可以通过首先读取寄存器,然后修改一位,然后将数据写回寄存器来设置和复位一个特定的引脚。
 
 PORTC.OUT |= 1<<0;
_delay_ms(1000);
PORTC.OUT &= ~(1<<0);
_delay_ms(1000);
 
 
 |