云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 最全单片机参考答案(姜志海)

最全单片机参考答案(姜志海)

  • 62 次阅读
  • 3 次下载
  • 2025/6/6 19:20:35

l_code=l_code&0x0f; if(l_code!=0xef) {

h_code=0xfe; /*逐行输出0*/ while(h_code!=0xff) {

H_PORT=h_code; l_code=L_PORT; l_code=l_code&0x0f; if(l_code==0x0f) {

h_code=h_code<<1; h_code=h_code|0x01; } }

h_code^=0xff; /*计算键值,方法是先把行值与0xff相异或,使对应的0的那一位变为1*/

for(i=0;i<=x;i++) /* 然后把行值与2的指数幂作比较,若想等,则把其对应的幂值赋给行值*/

{ /*最后,把得到的行值放在高四位,与列值相或可得到键值*/ if(h_code==Exp(2,x)) {

h_code=x; break; } }

h_code=h_code<<4; key_code=h_code|l_code;

21

switch(key_code) {

case 0x0e: case 0x1e: ……

case 0x67: case 0x77:

goto k14 goto k15 goto k0; goto k1

default:break; } } }

ulint Exp(uint m,uint x) /*指数函数*/ {uint i; ulint temp=1; for(i=0;i<=x;i++) {

temp*=m; }

return temp; }

3.编写出8位LED共阴极显示器的动态显示的C51程序。

#include #include

#define uchar unsigned char #define COM8255 XBYTE[0xbfff] #define PA8255 XBYTE[0xbcff]

22

#define PB8255 XBYTE[0xbdff] #define PC8255 XBYTE[0xbeff]

uchar idata dis_buf[8]={1,2,3,4,5,6,7,8}; /*显示缓冲区*/

uchar code table[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, 0x40,0x00}; void dl_ms(uchar d); void display(void)

{ uchar esgcode,bitcode,i; bitcode=0xfe; for(i=0;i<=7;i++) { esgcode=dis_buf[i]; PB8255=table[esgcode]; PA8255=bitcode; dl_ms(1);

bitcode=bitcode<<1; bitcode=bitcode|0x01; } }

void main(void) { COM8255=0x80; while(1) { display(); } }

23

4.与8051单片机接口的8255的4个端口地址分别为:0DFFCH、0DFFDH、0DFFEH、0DFFFH。对8255编程:口A输出数据0AAH,口B输入10个数据到片内RAM区,由PC4位产生一个负脉冲,低电平宽度为10μs。

#include #include

#define uchar unsigned char #define COM8255 XBYTE[0xdfff] #define PA8255 XBYTE[0xdffc] #define PB8255 XBYTE[0xdffd] #define PC8255 XBYTE[0xdffe] data uchar Buffer[10] _at_0x30;

void main(void) { uchar index; int j;

COM8255=0x82; PA8255=0XAA;

for(index=0;index<10;index++) { Buffer[index]=PB8255; }

PC8255=0xef; for(j=0;j<1;j++); }

5.设某个生产过程有6道工序,每道工序的时间分别为10s、8s、12s、15s、9s和6s。设延迟程序DYLA的延时为1s。用单片机通过8255的口A来进行控制。口A中的每一位可以控制某一位的起停,试编写有关程序。

24

搜索更多关于: 最全单片机参考答案(姜志海) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

l_code=l_code&0x0f; if(l_code!=0xef) { h_code=0xfe; /*逐行输出0*/ while(h_code!=0xff) { H_PORT=h_code; l_code=L_PORT; l_code=l_code&0x0f; if(l_code==0x0f) { h_code=h_code<<1; h_code=h_code|0x01; } } h_code^=0xff; /*计算键值,方法是先把行值与0xff相异或,使对应的0的那一位变为1*/ for(i=0;i<=x;i++) /* 然后把行值与2的指数幂作比较,若想等,则把其对应的

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com