+ if(tcnum>1)
+ return;
+
+ if(tcnum==0) {
+ T0TCR=0x03;
+ T0CTCR=mode|(cap<<2);
+ T0PR=psc;
+ }
+ else {
+ T1TCR=0x03;
+ T1CTCR=mode|(cap<<2);
+ T1PR=psc;
+ }
+}
+
+void interrupt_tc_match_config(u8 tcnum,u8 mnum,u32 val,u8 mode) {
+
+ u32 *mraddr;
+
+ if(tcnum>1)
+ return;
+
+ if(mnum>3)
+ return;
+
+ if(tcnum==0) {
+ T0MCR=mode<<(3*mnum);
+ mrddr=&T0MR0
+ }
+ else {
+ T1MCR=mode<<(3*mnum);
+ mrddr=&T1MR0
+ }
+
+ mraddr[mnum]=val;
+}
+
+void interrupt_tc_capt_config(u8 tcnum,u8 cnum,u8 mode) {
+
+ if(tcnum>1)
+ return;
+
+ if(cnum>3)
+ return;
+
+ if(tcnum==0)
+ T0CCR=mode<<(3*cnum);
+ else
+ T1CCR=mode<<(3*cnum);
+}
+
+void interrupt_tc_ir_set(u8 tcnum,u8 tcmc) {
+
+ if(tcnum>1)
+ return;
+
+ if(tcnum==0)
+ T0IR=tcmc;
+ else
+ T1IR=tcmc;