ASM 板


LINE

看板 ASM  RSS
我写一个P2每秒反相一次,若RS232有接收到任何字元,P3就会反相一次 你必须加上interrupt 4才会正常动作. 以下程式你参考一下吧,希望对你有帮助. #include <reg52.h> void RS232_AND_INT(void); void delay1ms(unsigned int count); int x50ms=20; void main(void) { delay1ms(10); RS232_AND_INT(); while(1); } void TIME0_INT(void) interrupt 1 { x50ms--; if(x50ms==0) { x50ms=20; TH0=(65536-50000)/256; TL0=(65536-50000)%256; P2=~P2; } TF0=0; } void RS232_AND_INT(void) { SCON=0x52; TMOD=0x21; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=256-(28800/9600); TR0=1; TR1=1; ET0=1; ES=1; EA=1; } void RS232_INT(void) interrupt 4 //串列中断产生中断的时候P3闪烁一次 { TI=0; P3=~P3; delay1ms(1000); P3=~P3; RI=0; } void delay1ms(unsigned int count) { int i,j; for(i=0;i<count;i++) for(j=0;j<122;j++); } ※ 引述《sparc (......)》之铭言: : ※ [本文转录自 C_and_CPP 看板] : 作者: sparc (......) 看板: C_and_CPP : 标题: [问题] 8051的问题.拜托高手帮忙 悬赏一千P币 : 时间: Wed Nov 26 14:17:54 2008 : 新手程式遇到瓶颈 想请高手帮忙看一下 : 使用的装置: 89s52 : 计时器:timer0 : baudrate产生器:timer3 : 想写的东西: : 让P2所接的一排led会一秒闪烁一次 : 但如果使用者透过rs232以9600的速度传送一个字元 则会立刻闪一次 : 遇到的问题: : LED闪烁是没有问题 : 但如果RS232接收到一字元 则LED会立刻会停止闪烁 : 验证过的方式: : 去掉rs232时 led会正确的闪烁 : 去掉timer0时 led也的确会因为收到一个字元而闪一次 : 可是加在一起就不行了 : 非常感谢 : 程式: : unsigned char timer_count; //设定一秒 : unsigned long timer_second; //使用者输入秒数 : char time_out; //timer out flag 0:时间未到 1:时间已到 : void timer0_initial(unsigned long temp); //initial timer 0 初始使用者设定秒数 : void timer0_start(void); : void rs232_initial(void); : void rs232_start(void); : void main(void) : { : P2=0X00; //led灯 : while(1) : { : rs232_initial(); : time_out=0; : timer0_initial(1); : timer0_start(); : rs232_start(); : while(RI==0 && time_out==0); : P2=~P2; //led闪烁 : } : } : void timer0_initial(unsigned long temp) : { : timer_second = temp; : timer_count=20; : time_out=0; : EA=1; : ET0=1; : TMOD=0X01; : TH0=(65536-50000)/256; : TL0=(65536-50000)%256; : TR0=0; : } : void timer0_start(void) : { : TR0=1; : } : void timer0_pause(void) : { : TR0=0; : } : void timer0_int(void) interrupt 1 : { : if(timer_count<=1) : { : if(timer_second<=1) : { : time_out=1; : timer0_pause(); : } : else : { : timer_count=20; : timer_second=timer_second-1; : } : } : else timer_count=timer_count-1; : TH0=(65536-50000)/256; : TL0=(65536-50000)%256; : } : void rs232_initial(void) : { : TL2C=0XD8; : TH2C=0XFF; : TL2=0XD8; : TH2=0XFF; : T2CON=0X24; : SCON=0X50; : ES=0; : RI=0; : } : void rs232_start(void) : { : RI=0; : ES=1; : } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.114.49
1F:推 dexders:建议在UART中断设FLAG就好,尽量不要让中断占住程式执行 11/28 00:09
2F:推 utility:推..在中断里用delay...实在是无言. 11/28 23:19







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP