A general theorem is proved showing how to obtain a constant-weight binary cyclic code from a p-ary linear cyclic code, where p is a prime, by using a representation of GF(p) as cyclic shifts of a binary p-tuple. Based on this theorem, constructions are given for four classes of binary constant-weight codes. The first two classes are shown to achieve the Johnson upper bound on minimum distance asymptotically for long block lengths. The other two classes are shown similarly to asymptotically meet the low-rate Plotkin upper bound on minimum distance. A cyclically permutable code is a binary code whose codewords are cyclically distinct and have full cyclic order. A simple method is given for selecting virtually the maximum number of cyclically distinct codewords with full cyclic order from Reed-Solomon codes and from Berlekamp-Justesen maximum-distance-separable codes. Two correspondingly optimum classes of constant-weight cyclically permutable codes are constructed by appropriate selection of codewords from the first two classes of binary constant-weight codes. It is shown that cyclically permutable codes provide a natural solution to the problem of constructing. protocol-sequence sets for the M-active-out-of-T users collision channel without feedback.