LED灯初始化: 1.设置为GPIO口 (P1SEL) -----Port1 Function Select 2.定义输出 (P1DIR) -----Port1 Direction 按键中断初始化: 1.按键设置为GPIO口(P1SEL&=~0x07) -----Port1 Function Select 2.定义为输入(P1DIR&=~0x04) -----Port1 Direction 3.为所有的端口P1设置“上拉/下拉模式”(P2INP&=~0x40) -----Port2 Input Mode 4.将P1_2设置为“上拉”(P1INP&=~0x04) -----Port1 Input Mode -------------------------------------------- 5.打开所有中断EA=1 6.打开P1中断源(IEN2|=0x10) -----Interrupt Enable 2 7.为具体端口P1_2打开中断(P1IEN|=0x04) -----Port1 Interrupt Mask 8.为P1_2设置触发方式(PICTL|=0x02) -----Port Interrupt Control 9.#pragma vector=P1INT_VECTOR __interrupt void P1_ISR(void) { 判断是否对应位有中断(P1IFG&0x04) -----Port1 Interrupt Status Flag { //程序 } P1IF=0x00; 清空端口中断标志位 P1IFG=0x00; }
定时器中断: 1.设置时钟 CLKCONCMD &=0x80; //设置晶振为32MHZ //等待晶振稳定 2.设置定时器1模式和分频(T1CTL|=0x05) -----Timer1 Control (公式:分频/32000000*64000*次数=要的时间) 3.使能定时器1溢出中断(TIMIF|=0x40) -----Timer Interrupt Mask/Flag 4.打开定时器1中断 IEN1(T1IE=1) ----- --------------------------------------------------------- 5.#pragma vector=T1_VECTOR __interrupt void T1_ISR(void) { //程序 } 串口配置: 1.设置时钟 CLKCONCMD &=0x80; //设置晶振为32MHZ while(CLKCONSTA & 0x40); //等待晶振稳定 2.设置外设控制(PERCFG=0x00) //设置UART0的备用位置1.参考书127页 3.端口选择外设 (P0SEL|=0x3C) //设置P0端口模式 //仅需要设置4个口。参考127页 4.端口0的外设优先级控制(P2DIR&=~0xC0) //将USART0排到最前 5.USART寄存器调为UART模式和打开接收 (U0CSR=0xC0) 6.波特率控制(书130页) (U0GCR) (U0BAUD) 7.接收中断清零 :(URX0IF=0) 8.IEN0=0x84;(打开EA总中断和UART0接收中断) ------------------------------------------------------ 发送函数 void usart_tx_string(char *data,int len) { unsigned int j; for(j=0;j<len;j++) { U0DBUF=*data++; while(UTX0IF==0); UTX0IF=0; } } 接收中断 #pragma vector=URX0_VECTOR __interrupt void UART0_RX_ISR(void) { URX0IF=0; temp=U0DBUF; } --------------------------------------------------------- void main() { if(temp!='#') else { U0CSR&=~0x40; //UART禁止接收
//程序
U0CSR|=0x40; //UART允许接收 } }
ADC模模式: ADC初始化: AVDD5引脚、128抽取率、通道0 (ADCCON3=0x90); -----ADC Control 3 等待转换完毕,一旦设置上面这个语句便会启动转换,所以要等待while(!ADCIF); 赋值高字节 value=ADCH 字节左移动 value=value<<8 赋值低字节或不覆盖 value|=ADCL ------------------------------------------------------- 定时器初始化: CLKCONCMD&=0x80; 定时器1 128分频、模模式(T1CTL|=0x0E) 定时器1,通道0比较模式 T1CCTL0|=0x04; T1通道0低字节( T1CC0L=50000&0x00ff) T1通道0高字节T1CC0H=(50000&0xff00)>>8 50000--一次溢出200ms--公式:32000000/分频*溢出(单位秒)=所要溢出秒的次数