编辑: 元素吧里的召唤 2019-07-02

* 函数声明 void init_data(void);

void init_COM(void);

void serial_IRQ(void);

uchar ASCII2SEG(uchar ascii);

void display_SEG(uchar *buffer);

void code_index(uchar *buffer, uchar index);

void transmit(void);

void set_baud(void);

void delay(void);

* 全局变量定义 uchar rdata;

// 接收字符 uchar tdata;

// 发送字符 uchar rcount;

// 接收字符个数 uchar tcount;

// 发送字符个数 uchar baud;

// 波特率 uchar baud_opt;

// 波特率选项 * 常量表 // 0~9,a~z,-,.段码 const uchar code Tab_char[] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6, 0xFA,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x2E,0x0C,0x70, 0x6E,0x1C,0xED,0xEC,0xFC,0xCE,0xE6,0x8C,0xB6,0x1E, 0x7C,0x38,0x7D,0x6E,0x76,0xDA,0x02,0x01 };

// 数码管位码 const uchar code Tab_dig[] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

// 波特率参数 const uchar code Tab_baud[] = {12,24,48,96, 0x98,0xCC,0xE6,0xF3};

int main(void) { uchar LED_buf[8];

// 数码管中显示字符在段码表中位置数组 init_data();

init_COM();

while(1) { display_SEG(LED_buf);

} return 0;

} * 函数名称:init_COM * * 函数功能描述:初始化串口 * 输入参数:none * * 返回数据:none * * 说明:使用串口控制、计数方式、计数控制、电源控制、中断允许、中断优先级控制 * 寄存器 void init_COM(void) { SCON = 0x50;

// 串口方式1,允许接收 TMOD |= 0x20;

// 计数方式2 PCON = 0x80;

// 波特率加倍 TH1 = Tab_baud[7];

// 波特率9600bps TL1 = Tab_baud[7];

IE |= 0x91;

// 串口、片外中断0中断允许 IP |= 0x10;

// 串口中断为高优先级 IT0 = 1;

// 片外中断申请边沿触发方式 TR1 = 1;

// 启动波特率发生器 } * 函数名称:init_data * * 函数功能描述:初始化变量,对发送接收变量及计数变量清零 * 输入参数:none * * 返回数据:none * * 说明:'

-'

作为等待标志 void init_data(void) { rdata = '

-'

;

tdata = '

-'

;

rcount = 0;

tcount = 0;

baud_opt = 0;

baud = Tab_baud[3];

} * 函数名称:serial_IRQ * * 函数功能描述:串口中断申请的处理程序,接收数据、清中断标志位及字符计数 * 输入参数:none * * 返回数据:none * * 说明: none void serial_IRQ(void) interrupt

4 using

1 { if (1 == RI) { rdata = SBUF;

RI = 0;

tdata = rdata;

// 备份接收到的字符,为发送做准备 transmit();

// 调用发送函数 rcount++;

} else if (1 == TI) { TI = 0;

tcount++;

} if (99 == rcount) rcount = 0;

else if (99 == tcount) tcount = 0;

} * 函数名称:ASCII2SEG * * 函数功能描述:将ASCII码转换成数码管段码数组的下标 * 输入参数:待转换的ASCII字符 * * 返回数据:自定义数码管段码数组的下标 * * 说明:'

.'

作为未定义字符的标志 uchar ASCII2SEG(uchar ascii) { if ((ascii >

= '

0'

) &

&

(ascii = '

a'

) &

&

(ascii = '

A'

) &

&

(ascii = '

a'

) &

&

(tdata = '

A'

) &

&

(tdata ........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题