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

{

TH0=(65536-50000)/256; TL0=(65536-50000)%6; i++; if(i==40) { } }

i=0;

P1_1=!P1_1;

5.外部RAM以DATA1开始的数据区中有100个数据,现在要求每隔150ms向内部RAM以DATA2开始的数据区传送10个数据,通过10次传送把数据全部传送完,以定时器1作为定时,编写有关程序。单片机的时钟频率是6MHz。

#include unsigned char i,j,k;

unsigned char xdata data1[100]; unsigned char data data2[100]; void main() { i=0; j=0; TMOD=0x10;

TH1=(65536-25000)/256; TL1=(65536-25000)%6; EA=1; ET1=1;

17

TR1=1; while(j<10); EA=0; while(1); }

void timer1_int(void) interrupt 3 {

TH1=(65536-25000)/256; TL1=(65536-25000)%6; i++;

if(i==3) //150ms时间到,传送一个数据 { } j++; }

i=0;

for(k=0;k++;k<10)

data2[j*10+k]=data1[j*10+k];

6.用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为2:1,设单片机的时钟频率为12MHz,写出有关程序。

#include unsigned char i; sbit P1_1=P1^1;

void main() {

18

}

i=0; TMOD=0x10;

TH0=(65536-10000)/256; TL0=(65536-10000)%6; EA=1; ET1=1; TR1=1; while(1);

void timer1_int(void) interrupt 3 {

TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;

if(i==2) P1_1=0; else if(i==3)

{ i=0; P1_1=1; } }

19

第4章 单片机外部资源的C51编程

1.某单片机系统应用8255开展I/O口,设其A口为方式1输入,B口为方式1输出,C口余下的引脚用于输出,试写出其初始化程序。

#include #include

#define COM8255 XBYTE[0xe003] /*定义8255控制寄存器地址*/ void init8255(void) {

COM8255=0xb4; /*定义8255控制寄存器地址*/ }

2.编写出8×4矩阵键盘的C51程序。 #include #include

#define H_PORT XBYTE[0xport1] #define L_PORT XBYTE[0xport2] #define ulint unsigned long int #define uint unsigned int #define uchar unsigned char

ulint Exp(uint m,uint x); /*定义一个指数函数*/

void keyscan(void) {

uchar h_code,l_code,key_code; uint i,x,m;

H_PORT=0x00; /*所有行输出0*/ l_code=L_PORT;

20

联系客服:779662525#qq.com(#替换为@)