Multiple channel independent AC dimmer using Arduino
Without doing an in-depth code review the problem is likely to be here:

delayMicroseconds(dimtime);    // Off cycle
digitalWrite(AC_LOAD, HIGH);   // triac firing
delayMicroseconds(10);         // triac On propogation delay


The delay functions cause the CPU to loop and no other processing can be done.

A better way would be to create a timer routine and call it for each channel. This would need a variable assigned for 


the preset value (the value at which the timer output turns on), 
the actual value (the current time value) and
the output state (timer done or not).


An easier method might be:


Divide your half-cycle into a discrete number of steps of, say, 50 μs.
In your main loop add a counter which is reset at zero-cross and increments every 50 μs.
In the loop compare the dimmer level for each channel with the timer and turn on that channel if dimmer level exceeded.




Figure 1. Relationship between current and trigger angle.

Note that the current produced does not vary linearly with the trigger angle due to the sinusoidal mains voltage waveform. Small changes around the peak voltage will have more significant effect than closer to the zero-cross. You may want to address this in your code if the visual effect does not match your dimmer setting.