atmega328p watchdog keeps restarting
From what I can see you are not enabling global interrupts in the status register.

From the datasheet:


  Bit 6 – WDIE: Watchdog Interrupt Enable
  When this bit is written to '1' and the I-bit in the Status Register is set, the Watchdog Interrupt is enabled.
  If WDE is cleared in combination with this setting, the Watchdog Timer is in Interrupt Mode, and the
  corresponding interrupt is executed if timeout in the Watchdog Timer occurs. If WDE is set, the Watchdog
  Timer is in Interrupt and System Reset Mode. The first timeout in the Watchdog Timer will set WDIF.
  Executing the corresponding interrupt vector will clear WDIE and WDIF automatically by hardware (the
  Watchdog goes to System Reset Mode)


Search the datasheet for "SREG" and see bit 7-I. This bit needs to be set for any interrupts to work properly.