(3)拟选T1以模式几定时?写出模式字TMOD的值; (4)计算T1的定时初值;
(5)编写主函数和T1中断服务函数,实现流水灯功能。 答案:(1)低电平发光二极管亮 (2)125ms;2次
(3)模式1,TMOD=0X11 (4)3036
(5)C语言程序
#include
{ TMOD=0x21;
TL1=220, TH1=11; EA=1, ET1=1; TR1=1; P1=~aa; while(1); }
T1中断服务函数:
void int_t1(void) interrupt 3 { TL0=220, TH0=11; aa<<=1; P1=~aa; }
13、在一个fosc为12MHz的89C52系统中接有一片ADC0809,它的地址为7FFFH,试编写ADC0809初始化程序和定时采样通道2的程序(假设采样频率为1ms/次,每次采样4个数据)。 答案:#include
define DAC0809 XBYTE[0x7fff]
unsigned char xdata buffer[4] _at_ 0xa0;
void main() {
TMOD=0x01; TH0=0xFC; TL0=0x18; EA=1; ET0=1; TR0=1; DAC0809=2; while(1); }
void time0_srv() interrupt 1 {
unsigned char i; TH0=0xFC; TL0=0x18; for(i=0;i<4;i++) {
DAC0809=2;
delay();
buffer[i]=DAC0809; } }
14、编写一函数move_xdata,把程序存储器地址从0x200开始的50个字节数据,传送到片外RAM的数组array中。
答案:unsigned char xdata array[50]; void move_xdata() { unsigned char i; unsigned char code *pp; pp=0x200; for(i=0;i<50;i++) array[i]=*(pp+i); } }
15、编写一函数move_xdata,把程序存储器地址从0x200开始的50个字节数据,传送到片外RAM的数组array中。
答案:(1)定时时间为1000μs/2,
计数值为1000μs/2/机器周期=500,T0初值为65036 (2)C语言程序: #include
T0中断服务函数:
void int_t0(void) interrupt 1 { TL0=12; TH0=254; P10=~P10; }
16、编写一函数to_data,把传送给它的十六进制数的ASCII码转换成十六进制数,并将其返回。 答案:unsigned char to_asc(char d) { d-=0x30; If(d>9) d-=7; return d; }
单片机期末考试卷集锦
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)