各位大虾:
这个程序应该很简单,但在我这儿却出现两个奇怪的现象。
程序功能:用数码管依次显示0-9
备注:P0口为数据输出来控制数码管8个阳极 P10接数码管的阴极 P0输出高电平P10输出低电平时数码管亮 0-9对应为:FA,82,B9,AB,C3,6B,7B,A2,FB,EB
#include <reg52.h>
sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5; sbit P16=P1^6; sbit P17=P1^7;
void delay(int i) { while(i>1) i--; }
void main(void) { while(1) { P10=0; P0=0xFA; delay(98303); P0=0x82; delay(98303); P0=0xB9; delay(98303); P0=0xAB; delay(98303); P0=0xC3; delay(98303); P0=0x6B; delay(98303); P0=0x7B; delay(98303); P0=0xA2; delay(98303); P0=0xFB; delay(98303); P0=0xEB; delay(98303); } }
问题1:从观察窗口看P0的值,在PC指针经过“P0=0xFA;”后P0的值为什么没有 变成FA,而是在下条delay语句执行完后P0的值才变为FA? 问题2:void delay(int i)中定义的是int型,为什么其值可以取道98303,它 的范围不是0-65535么? |