急求一个单片机编程题5

5、PC 机上发送一字符串(以‘!’结束)给单片机,单片机接收到数据后,将这字符串中
大写字母的个数统计出来,然后送回给PC 机。通信波特率为19200bps,单片机外接晶
振频率为11.0592MHz。

乱写的,凑合看吧:
ORG 2000H
CLR A
MOV R7,#0
MOV R6,#0
MOV R5,#30
MOV R4,#20
MOV R3,#50H
MOV R2,#20H
LOOP1: MOV A,@R4
JNB ACC.7,LOOP2 ;判断符号数的正负
INC @R3
MOVX @R3,A ;负数存入外存中51H开始的单元中
INC @R7 ;负数个数+1
LOOP2: INC @R2
MOVX @R2,A ;正数存入外存中21H开始的单元中
INC @R6 ;正数个数+1
CJNE A,#64H,LOOP3
SJMP LOOP4
LOOP3: JNC LOOP4
MOV B,#0AH ;小于100的数改成压缩BCD码送还至原地址单元
DIV AB
SWAP A
ADD A,B
MOV @R4,A
LOOP4: MOV @R4,#0AAH ;不小于100的数改为AAH送还至原地址单元
INC @R4
DJNZ R5,LOOP1
MOV DPTR,#20H ;正数的个数存放至外存区20H单元中 MOV A,@R6
MOVX @DPTR,A
MOV DPTR,#50H ;负数的个数存放在外存区50H单元中
MOV A,@R7
MOVX @DPTR,A
SJMP $
上边的几个回答- -...此程序若还有错误请及时联系我修改,谢谢先!
另:各位参考的童鞋切记要加相关注释,多少做点改动,被老师认为雷同的渣就概不负责了哈。
So,建兄,渣就不多解释了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-04
不知道你说的是哪种单片机,用c表示收到的一个字节吧,
if((c>= 'A') && (c<='Z'))
{
Count ++; //全局变量,计数
}
if(c=='!')
{
TxFlag = 1;//发送标志
}
//在大循环中查询TxFlag,如果为1就发送Count
第2个回答  2011-01-10
这个比较简单吧,你的单片机什么型号。主要是计算ASCII码,了解了什么单片机,使用时需要配置相应的寄存器
第3个回答  2011-01-10
网上有很多资料,查一下就出来了,稍微改一下就行了》》》》》》》

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网