主程序----main.c
- #define ALLOCATE_EXTERN
- #include "HC89S003F4.h"
- #include "stdio.h"
- #include "gpio.h"
- #include "uart.h"
- #define AD_num 10 //通道数
- unsigned int gui_AdcValue_a[AD_num] = {0x00};
- //存放转换后的数值
- unsigned char guc_AdcChannel_a[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
- //ADC通道预设置
- unsigned char guc_Count = 0; //通道计数
- char sendbuf[] = " I'm the Id ";
- char getbuf[20];
- unsigned int flag=0,num=5,i=0,mode=0;
- /***************************************************
- 主程序
- ****************************************************/
- void main()
- {
- WDTCCR = 0x00;
- CLKSWR = 0x51;
- CLKDIV = 0x01;
-
- /**********************************UART端口设置¯**************************************/
- // P2M0 = P2M0&0x0F|0x80; //P21TX
- GPIO(P10,IO_OUT_OD); //P10TX
- // P0M1 = P0M1&0x0F|0x20; //P03RX
- GPIO(P11,IO_IN_FL_NO_SMT); //P11TX
-
- // TXD_MAP = 0x21; //TX端口映射到P21
- TXD_MAP = 0x10; //TX端口映射到P10
- // RXD_MAP = 0x03; //RX端口映射到P03
- RXD_MAP = 0x11; //RX端口映射到P11
- T4CON = 0x06; //模式6
-
- //波特率 38400---FFE6
- //波特率 9600---FF98
- TH4 = 0xFF;
- TL4 = 0xE6;
- SCON2 = 0x02;
- SCON = 0x10;
- IE |= 0X10;
- EA = 1;
- /************************************ADC设置*****************************************/
- GPIO(P00,IO_IN_AN);
- GPIO(P01,IO_IN_AN);
- GPIO(P02,IO_IN_AN);
- GPIO(P03,IO_IN_AN);
- GPIO(P04,IO_IN_AN);
- GPIO(P05,IO_IN_AN);
- GPIO(P06,IO_IN_AN);
- GPIO(P07,IO_IN_AN);
- GPIO(P20,IO_IN_AN);
- GPIO(P21,IO_IN_AN);
- ADCC0 = 0x80;
- Delay_2us(10);
- ADCC1 = 0x00;
- ADCC2 = 0x4D;
- IE1 |= 0x20;
- EA = 1;
- ADCC0 &=~ 0x20;
- Delay_2us(10);
- ADCC0 |= 0x40;
- while(1)
- {
- printf("AD_a");
- for(i=0;i<AD_num;i++)
- {
- printf(" %d ",gui_AdcValue_a[i]);
- }
- printf("\r\n");
- Delay_ms(500);
- }
- }
- }
- void adc_do(unsigned int ad_value)
- {
- gui_AdcValue_a[guc_Count] = ad_value;
- guc_Count++;
- if(guc_Count >=AD_num)guc_Count=0;
- ADCC1 = (ADCC1&(~0x0f))|(guc_AdcChannel_a[guc_Count]);
- Delay_2us(10);
- }
- /*******************************ADC中断**************************************/
- void ADC_Rpt() interrupt ADC_VECTOR
- {
- ADCC0 &=~ 0x20;
- adc_do(ADCR);
- ADCC0 |= 0x40;
- }
- /**********************************串口中断**************************************/
- void UART1_Rpt(void) interrupt UART1_VECTOR
- {
- char temp;
- if(SCON & 0x01)
- {
- temp= SBUF;
- // if(flag==0) uart_do(temp);
- SCON &=~ 0x01;
- }
- }
|