stc12c5a60s2串口通讯代码

上传人:re****.1 文档编号:487657088 上传时间:2024-02-02 格式:DOC 页数:5 大小:21.51KB
返回 下载 相关 举报
stc12c5a60s2串口通讯代码_第1页
第1页 / 共5页
stc12c5a60s2串口通讯代码_第2页
第2页 / 共5页
stc12c5a60s2串口通讯代码_第3页
第3页 / 共5页
stc12c5a60s2串口通讯代码_第4页
第4页 / 共5页
stc12c5a60s2串口通讯代码_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《stc12c5a60s2串口通讯代码》由会员分享,可在线阅读,更多相关《stc12c5a60s2串口通讯代码(5页珍藏版)》请在金锄头文库上搜索。

1、#include #includeunsigned char yb;unsigned char n14;char nn;unsigned char sn;unsigned char num,mm; /定时器计数unsigned char sn;unsigned char adcnum8; /ad转换结果unsigned char adcyb; /ad转换游标unsigned char ssbuf12;/串口缓存unsigned char syb;sbit dat=P32;sbit clk=P33;sbit load=P36;sbit dat1=P34;sbit clk1=P35;sbit lo

2、ad1=P37;sbit sys=P44;sbit sc1=P46;sbit sc2=P45;sbit led1 = P06;void ssend()SBUF=ssbuf0;syb=1; void adc(void) interrupt 5adcnumadcyb=ADC_RES;/存储结果/adcnumladcyb=ADC_RESL;/低两位adcyb+;if (adcyb7)adcyb=0;ADC_CONTR=(0XE0|adcyb);ssbuf0=253;ssbuf1=adcnum0;ssbuf2=adcnum1;ssbuf3=adcnum2;ssbuf4=adcnum3;ssbuf5=a

3、dcnum4;ssbuf6=adcnum5;ssbuf7=adcnum6;ssbuf8=adcnum7;ssbuf9=254;ssbuf10=0x0d;ssbuf11=n;ssend();elseADC_CONTR=(0xe8|adcyb); /继续下一位void out(unsigned char a1,unsigned char a2,unsigned char sin)load=1;clk=1;dat=a1;clk=0;clk=1;dat=a2;clk=0;clk=1; dat=1;clk=0;clk=1; dat=(sin7); clk=0;clk=1;dat=(sin & 0x40)

4、6);clk=0;clk=1;dat=(sin & 0x20)5);clk=0;clk=1;dat=(sin & 0x10)4);clk=0;clk=1;dat=(sin & 0x08)3);clk=0;clk=1;dat=(sin & 0x04)2);clk=0;clk=1;dat=(sin & 0x02)1);clk=0;clk=1;dat=(sin & 0x01);clk=0;clk=1;load=0;load=1;void out1(unsigned char a1,unsigned char a2,unsigned char sin)load1=1;clk1=1;dat1=a1;cl

5、k1=0;clk1=1;dat1=a2;clk1=0;clk1=1; dat1=1;clk1=0;clk1=1; dat1=(sin7); clk1=0;clk1=1;dat1=(sin & 0x40)6);clk1=0;clk1=1;dat1=(sin & 0x20)5);clk1=0;clk1=1;dat1=(sin & 0x10)4);clk1=0;clk1=1;dat1=(sin & 0x08)3);clk1=0;clk1=1;dat1=(sin & 0x04)2);clk1=0;clk1=1;dat1=(sin & 0x02)1);clk1=0;clk1=1;dat1=(sin &

6、0x01);clk1=0;clk1=1;load1=0;load1=1;void delay(int nu)unsigned int m,n;for(m=1;m=nu;m+)for(n=1;n13)if(n0=0xfd)&(n13=0xfe) yb=0;out(0,0,n1);out(0,1,n2);out(1,0,n3);out(1,1,n4);out1(0,0,n5);out1(0,1,n6);out1(1,0,n7);out1(1,1,n8);P0=n9;P1=n10;/P2=n11;sc1=1;sc1=0;/P2=n12;sc2=1;sc2=0;sn=1; elseyb=0;else

7、yb=0; void initex()IT0=1;IT1=1;/设置外部中断触发方式 0为负电平触发 1为负跳变触发EX0=1;EX1=1;/开外部中断void main (void)/锁存器锁存P1M1=0xe7;P1M0=0x00;/PmMn m=4,3,2,1 n=0,1 (m:0 0 准双向 0 1 推挽 1 0 仅输入 1 1 开漏)P1ASF=0xe7;/打开P1口的ad转换功能 1110 0111 (bit7-bit0)ADC_CONTR=0xe0;/设置 adc_power speed1 speed0 adc_flag adc_start chs2 chs1 chs0 1110

8、 0000EADC=1;initex();P4SW=0x70;/启动p4口 x000 xxxx SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */ TMOD |= 0x21; /* TMOD: timer 1, mode 2, 8-bit reload */AUXR|=0x40;/开12倍速9600变115200 TH1 = 0xfd;/* TH1: reload value for 9600 baud 11.0592MHz */TH0=65534/256;TL0=65534%256; TR1 = 1; /* TR1: timer 1 run */T

9、R0=1;ET0=1; EA = 1; /*打开总中断*/ ES = 1; TI=0; /*打开串口中断*/yb=0;sn=0;sn=1;mm=0;/灯慢速显示ADC_CONTR |=0x08;/开始转换while (1) /*主循环不做任何动作*/ void tmr0(void) interrupt 1TH0=65534/256;TL0=65534%256;num+;mm+;if(mm1000)led1=!led1;ADC_CONTR|=0x08;/adc转换开始 xxxx 1xxx(adc_start)mm=0;if (num=25)|(num=50)|(num=75) & sn)sys=!sys;if (num=100)num=0;sys=!sys;sn=0; void UART_SER (void) interrupt 4 /串行中断服务程序unsigned char Temp; /定义临时变量 if(RI) /判断是接收中断产生 RI=0; /标志位清零 Temp=SBUF; /读入缓冲区的值 nyb=Temp; yb+; if (yb13) cl(); if (Temp=0xfe) cl(); if(TI) /如果是发送标志位,清零 TI=0; if (syb12)SBUF=ssbufsyb;syb+;elsesyb=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 文学/艺术/历史 > 人文/社科

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号